
<!DOCTYPE HTML>
<html lang="zh-hans" >
    <head>
        <meta charset="UTF-8">
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <title>地图模块 · Aivin开发笔记</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="description" content="">
        <meta name="generator" content="GitBook 3.2.3">
        <meta name="author" content="Aivin">
        
        
    
    <link rel="stylesheet" href="../../gitbook/style.css">

    
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-search-plus/search.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-anchor-navigation-ex/style/plugin.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-fontsettings/website.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-tbfed-pagefooter/footer.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-local-video/video-js.min.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-splitter/splitter.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-expandable-chapters/expandable-chapters.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-highlight/website.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-theme-comscore/test.css">
                
            
        

    

    
        
        <link rel="stylesheet" href="../../styles/website.css">
        
    

        
    
    
    
    <meta name="HandheldFriendly" content="true"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../gitbook/images/apple-touch-icon-precomposed-152.png">
    <link rel="shortcut icon" href="../../gitbook/images/favicon.ico" type="image/x-icon">

    
    <link rel="next" href="Androidstudio插件开发.html" />
    
    
    <link rel="prev" href="相机模块.html" />
    

    
        <link rel="shortcut icon" href='../../assets/images/favicon.ico' type="image/x-icon">
    
    
        <link rel="bookmark" href='../../assets/images/favicon.ico' type="image/x-icon">
    
    
    

    </head>
    <body>
        
<div class="book">
    <div class="book-summary">
        
            
<div id="book-search-input" role="search">
    <input type="text" placeholder="输入并搜索" />
</div>

            
                <nav role="navigation">
                


<ul class="summary">
    
    

    

    
        
        
    
        <li class="chapter " data-level="1.1" data-path="../../">
            
                <a href="../../">
            
                    
                    首页
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2" data-path="../doc/常用网站.html">
            
                <a href="../doc/常用网站.html">
            
                    
                    常用网站
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.3" data-path="../常用软件/常用软件和框架.html">
            
                <a href="../常用软件/常用软件和框架.html">
            
                    
                    常用软件和框架
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4" data-path="../doc/开发规范.html">
            
                <a href="../doc/开发规范.html">
            
                    
                    开发规范
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5" data-path="../doc/开源软件.html">
            
                <a href="../doc/开源软件.html">
            
                    
                    开源软件和框架
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6" data-path="../doc/Android常用代码.html">
            
                <a href="../doc/Android常用代码.html">
            
                    
                    Android常用代码
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7" data-path="../源码阅读/源码阅读配置.html">
            
                <a href="../源码阅读/源码阅读配置.html">
            
                    
                    源码阅读
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.7.1" data-path="../源码阅读/其他框架源码.html">
            
                <a href="../源码阅读/其他框架源码.html">
            
                    
                    其他框架源码
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.8" data-path="../产品经理/产品经理.html">
            
                <a href="../产品经理/产品经理.html">
            
                    
                    产品经理
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.9" data-path="../设计模式/设计模式.html">
            
                <a href="../设计模式/设计模式.html">
            
                    
                    设计模式
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.9.1" data-path="../设计模式/设计模式.html">
            
                <a href="../设计模式/设计模式.html">
            
                    
                    设计模式
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.9.2" data-path="../设计模式/模式详解.html">
            
                <a href="../设计模式/模式详解.html">
            
                    
                    模式详解
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.9.3" data-path="../设计模式/mvc等.html">
            
                <a href="../设计模式/mvc等.html">
            
                    
                    mvc等
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.10" data-path="../数据结构/常用数据结构.html">
            
                <a href="../数据结构/常用数据结构.html">
            
                    
                    基本算法
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.10.1" data-path="../数据结构/常用数据结构.html">
            
                <a href="../数据结构/常用数据结构.html">
            
                    
                    常用数据结构
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.10.2" data-path="../常用算法/算法术语.html">
            
                <a href="../常用算法/算法术语.html">
            
                    
                    算法术语
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.10.3" data-path="../常用算法/排序算法.html">
            
                <a href="../常用算法/排序算法.html">
            
                    
                    排序算法
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.10.4" data-path="../常用算法/查找算法.html">
            
                <a href="../常用算法/查找算法.html">
            
                    
                    查找算法
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.10.5" data-path="../常用算法/大数相加.html">
            
                <a href="../常用算法/大数相加.html">
            
                    
                    大数相加
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.10.6" data-path="../常用算法/集合的所有子集.html">
            
                <a href="../常用算法/集合的所有子集.html">
            
                    
                    获得集合的所有子集
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.10.7" data-path="../常用算法/扫描线种子填充算法.html">
            
                <a href="../常用算法/扫描线种子填充算法.html">
            
                    
                    扫描线种子填充算法
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.10.8" data-path="../常用算法/其他算法.html">
            
                <a href="../常用算法/其他算法.html">
            
                    
                    其他算法
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.11" data-path="../java基础/原码补码反码.html">
            
                <a href="../java基础/原码补码反码.html">
            
                    
                    Java部分
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.11.1" data-path="../java基础/原码补码反码.html">
            
                <a href="../java基础/原码补码反码.html">
            
                    
                    原码补码反码
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.2" data-path="../java基础/java常用代码.html">
            
                <a href="../java基础/java常用代码.html">
            
                    
                    java常用代码
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.3" data-path="../java基础/JVM详解.html">
            
                <a href="../java基础/JVM详解.html">
            
                    
                    JVM详解
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.4" data-path="../java基础/类加载机制.html">
            
                <a href="../java基础/类加载机制.html">
            
                    
                    类加载机制
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.5" data-path="../java基础/内存模型.html">
            
                <a href="../java基础/内存模型.html">
            
                    
                    内存模型
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.6" data-path="../java基础/GC机制.html">
            
                <a href="../java基础/GC机制.html">
            
                    
                    GC机制
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.7" data-path="../java基础/对象内存布局.html">
            
                <a href="../java基础/对象内存布局.html">
            
                    
                    对象内存布局
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.8" data-path="../java基础/继承多态.html">
            
                <a href="../java基础/继承多态.html">
            
                    
                    继承和多态
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.9" data-path="../java基础/相等判断.html">
            
                <a href="../java基础/相等判断.html">
            
                    
                    相等判断
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.10" data-path="../java基础/Java容器类.html">
            
                <a href="../java基础/Java容器类.html">
            
                    
                    Java容器类
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.11" data-path="../java基础/Java枚举.html">
            
                <a href="../java基础/Java枚举.html">
            
                    
                    Java枚举
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.12" data-path="../java基础/自定义异常.html">
            
                <a href="../java基础/自定义异常.html">
            
                    
                    自定义异常
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.13" data-path="../java基础/深度拷贝.html">
            
                <a href="../java基础/深度拷贝.html">
            
                    
                    深度拷贝
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.14" data-path="../java基础/泛型详解.html">
            
                <a href="../java基础/泛型详解.html">
            
                    
                    泛型详解
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.15" data-path="../java基础/线程详解.html">
            
                <a href="../java基础/线程详解.html">
            
                    
                    线程详解
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.16" data-path="../java基础/java注解.html">
            
                <a href="../java基础/java注解.html">
            
                    
                    注解详解
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.17" data-path="../java基础/数据解析.html">
            
                <a href="../java基础/数据解析.html">
            
                    
                    数据解析
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11.18" data-path="../java基础/java8新特性.html">
            
                <a href="../java基础/java8新特性.html">
            
                    
                    Java8新特性
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.12" data-path="android零散知识.html">
            
                <a href="android零散知识.html">
            
                    
                    Android部分
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.12.1" data-path="基础控件使用.html">
            
                <a href="基础控件使用.html">
            
                    
                    基础控件使用
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.2" data-path="android零散知识.html">
            
                <a href="android零散知识.html">
            
                    
                    Android零散知识
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.3" data-path="android坐标体系.html">
            
                <a href="android坐标体系.html">
            
                    
                    Android坐标体系
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.4" data-path="APP的启动流程.html">
            
                <a href="APP的启动流程.html">
            
                    
                    APP启动流程
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.5" data-path="View加载流程.html">
            
                <a href="View加载流程.html">
            
                    
                    View加载流程
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.6" data-path="事件分发机制.html">
            
                <a href="事件分发机制.html">
            
                    
                    事件分发机制
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.7" data-path="控件绘制流程.html">
            
                <a href="控件绘制流程.html">
            
                    
                    控件绘制流程
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.8" data-path="常用shape.html">
            
                <a href="常用shape.html">
            
                    
                    常用shape
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.9" data-path="进程通信.html">
            
                <a href="进程通信.html">
            
                    
                    进程通信
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.10" data-path="../通信方式/通信方式详解.html">
            
                <a href="../通信方式/通信方式详解.html">
            
                    
                    通信方式详解
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.11" data-path="Binder详解.html">
            
                <a href="Binder详解.html">
            
                    
                    Binder详解
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.12" data-path="Handler详解.html">
            
                <a href="Handler详解.html">
            
                    
                    Handle详解
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.13" data-path="Fragment详解.html">
            
                <a href="Fragment详解.html">
            
                    
                    Fragment详解
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.14" data-path="Activity详解.html">
            
                <a href="Activity详解.html">
            
                    
                    Activity详解
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.15" data-path="BroadcastReceiver.html">
            
                <a href="BroadcastReceiver.html">
            
                    
                    BroadcastReceiver详解
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.16" data-path="Service服务.html">
            
                <a href="Service服务.html">
            
                    
                    Service详解
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.17" data-path="动画详解.html">
            
                <a href="动画详解.html">
            
                    
                    动画详解
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.18" data-path="屏幕刷新机制.html">
            
                <a href="屏幕刷新机制.html">
            
                    
                    屏幕刷新机制
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.19" data-path="屏幕适配.html">
            
                <a href="屏幕适配.html">
            
                    
                    屏幕适配
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.20" data-path="图片加载详解.html">
            
                <a href="图片加载详解.html">
            
                    
                    图片加载详解
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.21" data-path="WebView详解.html">
            
                <a href="WebView详解.html">
            
                    
                    WebView详解
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.22" data-path="沉浸式.html">
            
                <a href="沉浸式.html">
            
                    
                    沉浸式
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.23" data-path="相机模块.html">
            
                <a href="相机模块.html">
            
                    
                    相机模块
            
                </a>
            

            
        </li>
    
        <li class="chapter active" data-level="1.12.24" data-path="地图模块.html">
            
                <a href="地图模块.html">
            
                    
                    地图模块
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.25" data-path="Androidstudio插件开发.html">
            
                <a href="Androidstudio插件开发.html">
            
                    
                    Androidstudio插件开发
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.26" data-path="Apk插件化开发.html">
            
                <a href="Apk插件化开发.html">
            
                    
                    Apk插件化开发
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.27" data-path="App组件化开发.html">
            
                <a href="App组件化开发.html">
            
                    
                    App组件化开发
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.28" data-path="sdk开发.html">
            
                <a href="sdk开发.html">
            
                    
                    sdk开发
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.29" data-path="APP优化.html">
            
                <a href="APP优化.html">
            
                    
                    APP优化
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.30" data-path="项目参数配置.html">
            
                <a href="项目参数配置.html">
            
                    
                    项目参数配置
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.31" data-path="App发布.html">
            
                <a href="App发布.html">
            
                    
                    App发布
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.32" data-path="Android外挂.html">
            
                <a href="Android外挂.html">
            
                    
                    Android外挂
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.33" data-path="Android字节码插桩.html">
            
                <a href="Android字节码插桩.html">
            
                    
                    Android字节码插桩
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12.34" data-path="智能家居.html">
            
                <a href="智能家居.html">
            
                    
                    智能家居
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.13" data-path="../python/python基础.html">
            
                <a href="../python/python基础.html">
            
                    
                    python部分
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.13.1" data-path="../python/python基础.html">
            
                <a href="../python/python基础.html">
            
                    
                    python基础
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.13.2" data-path="../python/python爬虫.html">
            
                <a href="../python/python爬虫.html">
            
                    
                    python爬虫
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.14" data-path="../gradle/Groovy.html">
            
                <a href="../gradle/Groovy.html">
            
                    
                    Groovy
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.15" data-path="../kotlin/kotlin部分.html">
            
                <a href="../kotlin/kotlin部分.html">
            
                    
                    kotlin部分
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.16" data-path="../flutter/flutter部分.html">
            
                <a href="../flutter/flutter部分.html">
            
                    
                    flutter部分
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.17" data-path="../native/ccpp.html">
            
                <a href="../native/ccpp.html">
            
                    
                    native部分
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.17.1" data-path="../native/Linux.html">
            
                <a href="../native/Linux.html">
            
                    
                    Linux
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.17.2" data-path="../native/ccpp.html">
            
                <a href="../native/ccpp.html">
            
                    
                    cCpp
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.17.3" data-path="../native/NDK.html">
            
                <a href="../native/NDK.html">
            
                    
                    NDK
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.17.4" data-path="../native/系统编译剪裁.html">
            
                <a href="../native/系统编译剪裁.html">
            
                    
                    系统编译剪裁
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.17.5" data-path="../native/音视频.html">
            
                <a href="../native/音视频.html">
            
                    
                    音视频
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.17.6" data-path="../native/音视频第三方库.html">
            
                <a href="../native/音视频第三方库.html">
            
                    
                    音视频第三方库
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.17.7" data-path="../native/相关代码.html">
            
                <a href="../native/相关代码.html">
            
                    
                    相关代码
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.18" data-path="../server/服务器部分.html">
            
                <a href="../server/服务器部分.html">
            
                    
                    服务器部分
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.19" data-path="../webDev/web部分.html">
            
                <a href="../webDev/web部分.html">
            
                    
                    web部分
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.20" data-path="../人工智能/人工智能相关概念.html">
            
                <a href="../人工智能/人工智能相关概念.html">
            
                    
                    人工智能
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.21" data-path="../面试真题/极飞.html">
            
                <a href="../面试真题/极飞.html">
            
                    
                    面试真题
            
                </a>
            

            
        </li>
    

    

    <li class="divider"></li>

    <li>
        <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
            本书使用 GitBook 发布
        </a>
    </li>
</ul>


                </nav>
            
        
    </div>

    <div class="book-body">
        
            <div class="body-inner">
                
                    

<div class="book-header" role="navigation">
    

    <!-- Title -->
    <h1>
        <i class="fa fa-circle-o-notch fa-spin"></i>
        <a href="../.." >地图模块</a>
    </h1>
</div>




                    <div class="page-wrapper" tabindex="-1" role="main">
                        <div class="page-inner">
                            
<div class="search-plus" id="book-search-results">
    <div class="search-noresults">
    
                                <section class="normal markdown-section">
                                
                                <div id="anchor-navigation-ex-navbar"><i class="fa fa-navicon"></i><ul><li><span class="title-icon "></span><a href="#&#x5730;&#x56FE;&#x57FA;&#x7840;"><b>1. </b>&#x5730;&#x56FE;&#x57FA;&#x7840;</a></li><ul><li><span class="title-icon "></span><a href="#&#x5E38;&#x89C1;&#x7684;&#x5730;&#x56FE;"><b>1.1. </b>&#x5E38;&#x89C1;&#x7684;&#x5730;&#x56FE;</a></li><li><span class="title-icon "></span><a href="#&#x5750;&#x6807;&#x7CFB;&#x7C7B;&#x578B;"><b>1.2. </b>&#x5750;&#x6807;&#x7CFB;&#x7C7B;&#x578B;</a></li><li><span class="title-icon "></span><a href="#utm-&#x4E0E;-wgs84-&#x7684;&#x533A;&#x522B;"><b>1.3. </b>UTM &#x4E0E; WGS84 &#x7684;&#x533A;&#x522B;</a></li><li><span class="title-icon "></span><a href="#epsg-4326-&#x548C;-epsg-3857"><b>1.4. </b>EPSG 4326 &#x548C; EPSG 3857</a></li><li><span class="title-icon "></span><a href="#&#x5730;&#x56FE;&#x5750;&#x6807;&#x4E92;&#x76F8;&#x8F6C;&#x6362;"><b>1.5. </b>&#x5730;&#x56FE;&#x5750;&#x6807;&#x4E92;&#x76F8;&#x8F6C;&#x6362;</a></li><li><span class="title-icon "></span><a href="#&#x9053;&#x683C;&#x62C9;&#x65AF;-&#x666E;&#x514B;&#xFF08;douglas-peuker-&#x62BD;&#x7A00;&#x7B97;&#x6CD5;"><b>1.6. </b>&#x9053;&#x683C;&#x62C9;&#x65AF;-&#x666E;&#x514B;&#xFF08;Douglas-Peuker) &#x62BD;&#x7A00;&#x7B97;&#x6CD5;</a></li></ul><li><span class="title-icon "></span><a href="#&#x9AD8;&#x5FB7;&#x5730;&#x56FE;"><b>2. </b>&#x9AD8;&#x5FB7;&#x5730;&#x56FE;</a></li><ul><li><span class="title-icon "></span><a href="#&#x6839;&#x636E;&#x6307;&#x5B9A;&#x7ECF;&#x7EAC;&#x5EA6;&#x663E;&#x793A;&#x548C;&#x5BFC;&#x822A;"><b>2.1. </b>&#x6839;&#x636E;&#x6307;&#x5B9A;&#x7ECF;&#x7EAC;&#x5EA6;&#x663E;&#x793A;&#x548C;&#x5BFC;&#x822A;</a></li><li><span class="title-icon "></span><a href="#&#x9690;&#x85CF;&#x5DE6;&#x4E0B;&#x89D2;logo"><b>2.2. </b>&#x9690;&#x85CF;&#x5DE6;&#x4E0B;&#x89D2;Logo</a></li><li><span class="title-icon "></span><a href="#&#x5730;&#x7406;&#x56F4;&#x680F;"><b>2.3. </b>&#x5730;&#x7406;&#x56F4;&#x680F;</a></li><li><span class="title-icon "></span><a href="#&#x52A0;&#x8F7D;&#x8C37;&#x6B4C;&#x74E6;&#x7247;&#x5730;&#x56FE;&#x6570;&#x636E;"><b>2.4. </b>&#x52A0;&#x8F7D;&#x8C37;&#x6B4C;&#x74E6;&#x7247;&#x5730;&#x56FE;&#x6570;&#x636E;</a></li><li><span class="title-icon "></span><a href="#&#x9AD8;&#x5FB7;&#x5730;&#x56FE;-&#x52A0;&#x8F7D;-mbtiles-&#x6587;&#x4EF6;"><b>2.5. </b>&#x9AD8;&#x5FB7;&#x5730;&#x56FE; &#x52A0;&#x8F7D; .mbtiles &#x6587;&#x4EF6;</a></li><li><span class="title-icon "></span><a href="#&#x52A0;&#x8F7D;&#x82F1;&#x6587;&#x5730;&#x56FE;"><b>2.6. </b>&#x52A0;&#x8F7D;&#x82F1;&#x6587;&#x5730;&#x56FE;</a></li><li><span class="title-icon "></span><a href="#&#x9AD8;&#x5FB7;&#x5730;&#x56FE;&#x5B9A;&#x4F4D;&#x4E0D;&#x51C6;&#x786E;&#x7684;&#x95EE;&#x9898;"><b>2.7. </b>&#x9AD8;&#x5FB7;&#x5730;&#x56FE;&#x5B9A;&#x4F4D;&#x4E0D;&#x51C6;&#x786E;&#x7684;&#x95EE;&#x9898;</a></li><li><span class="title-icon "></span><a href="#&#x591A;&#x8FB9;&#x5F62;&#x8BA1;&#x7B97;"><b>2.8. </b>&#x591A;&#x8FB9;&#x5F62;&#x8BA1;&#x7B97;</a></li><li><span class="title-icon "></span><a href="#&#x5730;&#x56FE;&#x5BFC;&#x822A;-&#x4E0D;&#x662F;&#x771F;&#x7684;&#x5BFC;&#x822A;"><b>2.9. </b>&#x5730;&#x56FE;&#x5BFC;&#x822A; (&#x4E0D;&#x662F;&#x771F;&#x7684;&#x5BFC;&#x822A;)</a></li><li><span class="title-icon "></span><a href="#&#x4E2D;&#x56FD;&#x7981;&#x98DE;&#x533A;"><b>2.10. </b>&#x4E2D;&#x56FD;&#x7981;&#x98DE;&#x533A;</a></li><li><span class="title-icon "></span><a href="#&#x7ECF;&#x7EAC;&#x5EA6;&#x53CD;&#x67E5;&#x5730;&#x5740;"><b>2.11. </b>&#x7ECF;&#x7EAC;&#x5EA6;&#x53CD;&#x67E5;&#x5730;&#x5740;</a></li></ul><li><span class="title-icon "></span><a href="#osmdroid"><b>3. </b>osmdroid</a></li><ul><li><span class="title-icon "></span><a href="#osm-&#x76F8;&#x5173;&#x6587;&#x6863;"><b>3.1. </b>osm &#x76F8;&#x5173;&#x6587;&#x6863;</a></li><li><span class="title-icon "></span><a href="#osm&#x53D1;&#x5C55;&#x5386;&#x53F2;"><b>3.2. </b>osm&#x53D1;&#x5C55;&#x5386;&#x53F2;</a></li><li><span class="title-icon "></span><a href="#osm-&#x5E38;&#x7528;&#x7C7B;"><b>3.3. </b>osm &#x5E38;&#x7528;&#x7C7B;</a></li><ul><li><span class="title-icon "></span><a href="#configuration"><b>3.3.1. </b>Configuration</a></li><li><span class="title-icon "></span><a href="#mapview"><b>3.3.2. </b>MapView</a></li><li><span class="title-icon "></span><a href="#onlinetilesourcebase"><b>3.3.3. </b>OnlineTileSourceBase</a></li><li><span class="title-icon "></span><a href="#maptileproviderbasic"><b>3.3.4. </b>MapTileProviderBasic</a></li><li><span class="title-icon "></span><a href="#overlaymanager"><b>3.3.5. </b>OverlayManager</a></li><li><span class="title-icon "></span><a href="#marker"><b>3.3.6. </b>Marker</a></li><li><span class="title-icon "></span><a href="#polyline"><b>3.3.7. </b>Polyline</a></li><li><span class="title-icon "></span><a href="#polygon"><b>3.3.8. </b>Polygon</a></li><li><span class="title-icon "></span><a href="#dashpatheffect"><b>3.3.9. </b>DashPathEffect</a></li><li><span class="title-icon "></span><a href="#milestonemanager"><b>3.3.10. </b>MilestoneManager</a></li><li><span class="title-icon "></span><a href="#&#x5176;&#x4ED6;"><b>3.3.11. </b>&#x5176;&#x4ED6;</a></li></ul><li><span class="title-icon "></span><a href="#osm-&#x79BB;&#x7EBF;&#x5730;&#x56FE;"><b>3.4. </b>osm &#x79BB;&#x7EBF;&#x5730;&#x56FE;</a></li><li><span class="title-icon "></span><a href="#&#x5730;&#x56FE;&#x4E0A;&#x6DFB;&#x52A0;&#x81EA;&#x5B9A;&#x4E49;&#x5E03;&#x5C40;"><b>3.5. </b>&#x5730;&#x56FE;&#x4E0A;&#x6DFB;&#x52A0;&#x81EA;&#x5B9A;&#x4E49;&#x5E03;&#x5C40;</a></li><li><span class="title-icon "></span><a href="#polyline-&#x7EBF;&#x6761;&#x8DD1;&#x9A6C;&#x706F;&#x6548;&#x679C;"><b>3.6. </b>Polyline &#x7EBF;&#x6761;&#x8DD1;&#x9A6C;&#x706F;&#x6548;&#x679C;</a></li><li><span class="title-icon "></span><a href="#&#x76D1;&#x542C;&#x5730;&#x56FE;-&#x70B9;&#x51FB;-&#x548C;-&#x957F;&#x6309;"><b>3.7. </b>&#x76D1;&#x542C;&#x5730;&#x56FE; &#x70B9;&#x51FB; &#x548C; &#x957F;&#x6309;</a></li><li><span class="title-icon "></span><a href="#&#x7ED8;&#x5236;&#x865A;&#x7EBF;"><b>3.8. </b>&#x7ED8;&#x5236;&#x865A;&#x7EBF;</a></li><li><span class="title-icon "></span><a href="#&#x7ED8;&#x5236;-polyline-&#x5927;&#x91CF;&#x70B9;-&#x5361;&#x987F;&#x95EE;&#x9898;"><b>3.9. </b>&#x7ED8;&#x5236; Polyline (&#x5927;&#x91CF;&#x70B9;) &#x5361;&#x987F;&#x95EE;&#x9898;</a></li><li><span class="title-icon "></span><a href="#&#x6839;&#x636E;&#x5DF2;&#x77E5;&#x70B9;-&#x5E73;&#x79FB;&#x6307;&#x5B9A;&#x8DDD;&#x79BB;-&#x83B7;&#x53D6;&#x65B0;&#x7684;&#x70B9;-gps-&#x5750;&#x6807;"><b>3.10. </b>&#x6839;&#x636E;&#x5DF2;&#x77E5;&#x70B9; &#x5E73;&#x79FB;&#x6307;&#x5B9A;&#x8DDD;&#x79BB; &#x83B7;&#x53D6;&#x65B0;&#x7684;&#x70B9; (gps &#x5750;&#x6807;)</a></li><li><span class="title-icon "></span><a href="#&#x975E;&#x6CD5;&#x7684;&#x7ECF;&#x7EAC;&#x5EA6;&#x5750;&#x6807;&#x5BFC;&#x81F4;app&#x5954;&#x6E83;"><b>3.11. </b>&#x975E;&#x6CD5;&#x7684;&#x7ECF;&#x7EAC;&#x5EA6;&#x5750;&#x6807;&#x5BFC;&#x81F4;APP&#x5954;&#x6E83;</a></li></ul></ul></div><a href="#&#x5730;&#x56FE;&#x57FA;&#x7840;" id="anchorNavigationExGoTop"><i class="fa fa-arrow-up"></i></a><h1 id="&#x5730;&#x56FE;&#x57FA;&#x7840;"><a name="&#x5730;&#x56FE;&#x57FA;&#x7840;" class="anchor-navigation-ex-anchor" href="#&#x5730;&#x56FE;&#x57FA;&#x7840;"><i class="fa fa-link" aria-hidden="true"></i></a>1. &#x5730;&#x56FE;&#x57FA;&#x7840;</h1>
<h2 id="&#x5E38;&#x89C1;&#x7684;&#x5730;&#x56FE;"><a name="&#x5E38;&#x89C1;&#x7684;&#x5730;&#x56FE;" class="anchor-navigation-ex-anchor" href="#&#x5E38;&#x89C1;&#x7684;&#x5730;&#x56FE;"><i class="fa fa-link" aria-hidden="true"></i></a>1.1. &#x5E38;&#x89C1;&#x7684;&#x5730;&#x56FE;</h2>
<table>
<thead>
<tr>
<th>&#x5730;&#x56FE;</th>
<th>&#x91C7;&#x7528;&#x7684;&#x5750;&#x6807;&#x7CFB;</th>
</tr>
</thead>
<tbody>
<tr>
<td>&#x767E;&#x5EA6;&#x5730;&#x56FE;</td>
<td>&#x5883;&#x5185;&#x3001;&#x5305;&#x62EC;&#x6E2F;&#x6FB3;&#x53F0; :  BD09 &#x3002;<br>&#x5883;&#x5916; : WGS-84 &#x3002;</td>
</tr>
<tr>
<td>&#x9AD8;&#x5FB7;&#x5730;&#x56FE;</td>
<td>&#x5883;&#x5185;&#xFF1A;GCJ-02<br>&#x5883;&#x5916;&#xFF1A;&#x6682;&#x4E0D;&#x652F;&#x6301;</td>
</tr>
<tr>
<td>&#x817E;&#x8BAF;&#x5730;&#x56FE;</td>
<td>&#x5883;&#x5185;&#xFF1A;GCJ-02<br>&#x5883;&#x5916;&#xFF1A;&#x6682;&#x4E0D;&#x652F;&#x6301;</td>
</tr>
<tr>
<td>google&#x5730;&#x56FE;</td>
<td>&#x5883;&#x5185;&#xFF1A;GCJ-02  , &#x6570;&#x636E;&#x6765;&#x6E90;&#x4E8E;&#x9AD8;&#x5FB7;&#xFF0C;&#x4E24;&#x8005;&#x4E92;&#x901A;&#x3002; <br>&#x5883;&#x5916;&#xFF1A;WGS-84 &#x3002;</td>
</tr>
<tr>
<td>bing&#x5730;&#x56FE;</td>
<td>&#x5168;&#x7403;&#x7EDF;&#x4E00;&#xFF1A;WGS-84</td>
</tr>
<tr>
<td>&#x5929;&#x5730;&#x56FE;</td>
<td>&#x5168;&#x7403;&#x7EDF;&#x4E00; &#xFF1A;CGCS2000</td>
</tr>
</tbody>
</table>
<h2 id="&#x5750;&#x6807;&#x7CFB;&#x7C7B;&#x578B;"><a name="&#x5750;&#x6807;&#x7CFB;&#x7C7B;&#x578B;" class="anchor-navigation-ex-anchor" href="#&#x5750;&#x6807;&#x7CFB;&#x7C7B;&#x578B;"><i class="fa fa-link" aria-hidden="true"></i></a>1.2. &#x5750;&#x6807;&#x7CFB;&#x7C7B;&#x578B;</h2>
<table>
<thead>
<tr>
<th>&#x7C7B;&#x578B;</th>
<th>&#x8BF4;&#x660E;</th>
</tr>
</thead>
<tbody>
<tr>
<td>WGS-84   &#x3001; &#x4E16;&#x754C;&#x6807;&#x51C6;&#x5730;&#x7406;&#x5750;&#x6807;</td>
<td>World Geodetic System &#xFF0C;&#x56FD;&#x9645;&#x6807;&#x51C6; &#x3002;<br>&#x4ECE;&#x56FD;&#x9645;&#x6807;&#x51C6;GPS&#x8BBE;&#x5907;&#x4E2D;&#x83B7;&#x53D6;&#x5230;&#x7684;&#x5750;&#x6807;&#x90FD;&#x662F; WGS84 &#x3002;<br>WGS&#xFF0D;84 &#x5750;&#x6807;&#x7CFB;&#x662F;&#x7F8E;&#x56FD;&#x5EFA;&#x7ACB;&#x7684;GSP&#x539F;&#x59CB;&#x5750;&#x6807;&#x7CFB;&#xFF1B;</td>
</tr>
<tr>
<td>GCJ-02 &#x3001; &#x706B;&#x661F;&#x5750;&#x6807; &#x3001; &#x4E2D;&#x56FD;&#x56FD;&#x6D4B;&#x5C40;&#x5730;&#x7406;&#x5750;&#x6807;</td>
<td>&#x4E2D;&#x56FD;&#x6807;&#x51C6;&#xFF0C;&#x56FD;&#x5BB6;&#x6D4B;&#x7ED8;&#x5C40; &#x53D1;&#x5E03;&#x7684;&#x5750;&#x6807;&#x7CFB; &#x3002;<br>&#x5728;&#x4E2D;&#x56FD;&#xFF0C;&#x5FC5;&#x987B;&#x81F3;&#x5C11;&#x4F7F;&#x7528;GCJ02&#x5BF9;&#x5730;&#x56FE;&#x8FDB;&#x884C;&#x9996;&#x6B21;&#x52A0;&#x5BC6;&#x3002;<br>&#x706B;&#x661F;&#x5750;&#x6807;&#x7CFB;&#x7EDF; &#xFF0C;&#x5C31;&#x662F;&#x4E2D;&#x56FD;&#x8BBE;&#x8BA1;&#x7684;&#x4E00;&#x4E2A;&#x52A0;&#x5BC6;&#x63D2;&#x4EF6;&#xFF0C;&#x662F;&#x5BF9;&#x771F;&#x5B9E;&#x5730;&#x56FE;&#x8FDB;&#x884C;&#x4EBA;&#x4E3A;&#x7684;&#x52A0;&#x504F;&#x5904;&#x7406;&#xFF0C;&#x6309;&#x7167;&#x4E00;&#x5B9A;&#x7684;&#x52A0;&#x504F;&#x7B97;&#x6CD5;&#xFF0C;&#x5C06;&#x771F;&#x5B9E;&#x7684;&#x5750;&#x6807;&#x52A0;&#x5BC6;&#x6210;&#x865A;&#x5047;&#x7684;&#x5750;&#x6807;&#x3002;<br>&#x52A0;&#x504F;&#x5904;&#x7406;&#x4E0D;&#x662F;&#x7EBF;&#x6027;&#x7684;&#x52A0;&#x504F;&#xFF0C;&#x6240;&#x4EE5;&#x5404;&#x5730;&#x7684;&#x504F;&#x79FB;&#x60C5;&#x51B5;&#x90FD;&#x4F1A;&#x6709;&#x6240;&#x4E0D;&#x540C;&#x3002;<br>&#x8FD9;&#x6837;&#x4E00;&#x6765;&#x5730;&#x56FE;&#x7684;&#x5750;&#x6807;&#x5C31;&#x4E0E;&#x5B9E;&#x5730;&#x7684;&#x5750;&#x6807;&#x4E0D;&#x76F8;&#x7B26;&#x4E86;&#xFF0C;&#x4E8E;&#x662F;&#x5927;&#x5BB6;&#x628A;&#x8FD9;&#x79CD;&#x5750;&#x6807;&#x620F;&#x79F0;&#x4E3A;&quot;&#x706B;&#x661F;&#x5750;&#x6807;&quot; &#x3002;</td>
</tr>
<tr>
<td>CGCS2000</td>
<td>China Geodetic Coordinate System 2000 , <br>&#x662F;&#x6211;&#x56FD;&#x5EFA;&#x7ACB;&#x7684;&#x5927;&#x5730;&#x5750;&#x6807;&#x7CFB;&#xFF0C;&#x7C7B;&#x4F3C;&#x4E8E; WGS&#xFF0D;84 &#x5750;&#x6807;&#x7CFB;&#xFF0C;&#x662F;&#x539F;&#x59CB;&#x5750;&#x6807;&#x7CFB;&#x3002;</td>
</tr>
<tr>
<td>&#x641C;&#x72D7;&#x5750;&#x6807;&#x7CFB;</td>
<td>&#x5728; GCJ-02 &#x8FDB;&#x884C;&#x8FDB;&#x4E00;&#x6B65;&#x7684;&#x504F;&#x79FB;&#x7B97;&#x6CD5;&#x5F97;&#x5230;&#x3002;</td>
</tr>
<tr>
<td>&#x767E;&#x5EA6;&#x5730;&#x7406;&#x5750;&#x6807; &#x3001; BD-09</td>
<td>&#x5728;GCJ02 &#x7684;&#x57FA;&#x7840;&#x4E0A;&#x8FDB;&#x884C;&#x4E8C;&#x6B21;&#x52A0;&#x5BC6;&#x3002;</td>
</tr>
<tr>
<td>UTM &#x5750;&#x6807;&#x7CFB;</td>
<td>Universal Transverse Mercator Grid System , &#x901A;&#x7528;&#x6A2A;&#x58A8;&#x5361;&#x6258;&#x7F51;&#x683C;&#x7CFB;&#x7EDF; <br>&#x662F;&#x4E00;&#x79CD;&#x6295;&#x5F71;&#x5750;&#x6807;&#x7CFB; &#xFF0C;&#x662F;&#x4E00;&#x79CD;&#x5C06;&#x7403;&#x9762;&#x5750;&#x6807;&#x8F6C;&#x5316;&#x4E3A;&#x5E73;&#x9762;&#x5750;&#x6807;&#x7684;&#x65B9;&#x6CD5;</td>
</tr>
</tbody>
</table>
<h2 id="utm-&#x4E0E;-wgs84-&#x7684;&#x533A;&#x522B;"><a name="utm-&#x4E0E;-wgs84-&#x7684;&#x533A;&#x522B;" class="anchor-navigation-ex-anchor" href="#utm-&#x4E0E;-wgs84-&#x7684;&#x533A;&#x522B;"><i class="fa fa-link" aria-hidden="true"></i></a>1.3. UTM &#x4E0E; WGS84 &#x7684;&#x533A;&#x522B;</h2>
<pre><code class="lang-text">WGS84 &#x662F;&#x5730;&#x7406;&#x5750;&#x6807;&#x7CFB;&#xFF0C;&#x662F;&#x7528;&#x7ECF;&#x7EAC;&#x5EA6;&#x8868;&#x793A;&#x7684;&#x692D;&#x7403;&#x4F53;&#x5750;&#x6807;&#x7CFB;&#xFF0C;&#x662F;&#x5C06;&#x5730;&#x7403;&#x4E0A;&#x5404;&#x70B9;&#x7528;&#x7403;&#x9762;&#x70B9;&#x8868;&#x793A;&#x7684;&#x65B9;&#x6CD5;&#xFF1B;

UTM &#x662F;&#x6295;&#x5F71;&#x5750;&#x6807;&#x7CFB;&#xFF0C;&#x662F;&#x7528;X&#x3001;Y&#x8868;&#x793A;&#x7684;&#x5E73;&#x9762;&#x76F4;&#x89D2;&#x5750;&#x6807;&#x7CFB;&#xFF0C;&#x662F;&#x4E00;&#x79CD;&#x5C06;&#x7403;&#x9762;&#x5750;&#x6807;&#x8F6C;&#x5316;&#x4E3A;&#x5E73;&#x9762;&#x5750;&#x6807;&#x7684;&#x65B9;&#x6CD5;&#xFF1B;
&#x6BCF;&#x4E2A;&#x6295;&#x5F71;&#x5750;&#x6807;&#x7CFB;&#x90FD;&#x662F;&#x6839;&#x636E;&#x5730;&#x7406;&#x5750;&#x6807;&#x7CFB;&#x8F6C;&#x5316;&#x800C;&#x6765;&#xFF0C;
UTM &#x6295;&#x5F71;&#x5750;&#x6807;&#x7CFB;&#x53EF;&#x4EE5;&#x662F;&#x4ECE;&#x4EFB;&#x610F;&#x4E00;&#x4E2A;&#x5730;&#x7406;&#x5750;&#x6807;&#x7CFB;&#x8F6C;&#x5316;&#x800C;&#x6765;&#xFF0C;
&#x53EA;&#x662F;&#x5927;&#x591A;&#x6570;&#x897F;&#x65B9;&#x56FD;&#x5BB6;&#xFF08;&#x4E3B;&#x8981;&#x662F;&#x7F8E;&#x56FD;&#xFF09;&#x5E38;&#x7528; WGS84 &#x4F5C;&#x4E3A;&#x8F6C; UTM &#x7684;&#x5730;&#x7406;&#x5750;&#x6807;&#x7CFB;&#xFF0C;
&#x6240;&#x4EE5;UTM&#x6295;&#x5F71;&#x548C;WGS84&#x5750;&#x6807;&#x7CFB;&#x5E38;&#x5E38;&#x5728;&#x4E00;&#x5E45;&#x5F71;&#x50CF;&#x4E2D;&#x51FA;&#x73B0;&#x3002;
</code></pre>
<h2 id="epsg-4326-&#x548C;-epsg-3857"><a name="epsg-4326-&#x548C;-epsg-3857" class="anchor-navigation-ex-anchor" href="#epsg-4326-&#x548C;-epsg-3857"><i class="fa fa-link" aria-hidden="true"></i></a>1.4. EPSG 4326 &#x548C; EPSG 3857</h2>
<pre><code class="lang-text">EPSG 4326  (&#x53C8;&#x540D; WGS84&#xFF0C;&#x672A;&#x6295;&#x5F71;)&#x662F;&#x4E00;&#x4E2A;&#x5730;&#x7406;&#x7684;&#x975E;&#x9879;&#x76EE;&#x5750;&#x6807;&#x7CFB;&#x3002;&#x5B83;&#x662F;lat&#xFF0C;longs GPS&#x663E;&#x793A;&#x5668;&#x3002; 
EPSG 3857 (&#x53C8;&#x540D;Pseudo-Mercator&#xFF0C;&#x7403;&#x5F62;&#x58A8;&#x5361;&#x6258;&#x6216;Web&#x58A8;&#x5361;&#x6258;) &#x662F;&#x6295;&#x5F71;&#x5750;&#x6807;&#x7CFB;&#x3002;
</code></pre>
<h2 id="&#x5730;&#x56FE;&#x5750;&#x6807;&#x4E92;&#x76F8;&#x8F6C;&#x6362;"><a name="&#x5730;&#x56FE;&#x5750;&#x6807;&#x4E92;&#x76F8;&#x8F6C;&#x6362;" class="anchor-navigation-ex-anchor" href="#&#x5730;&#x56FE;&#x5750;&#x6807;&#x4E92;&#x76F8;&#x8F6C;&#x6362;"><i class="fa fa-link" aria-hidden="true"></i></a>1.5. &#x5730;&#x56FE;&#x5750;&#x6807;&#x4E92;&#x76F8;&#x8F6C;&#x6362;</h2>
<p><a href="https://github.com/hnyer/JZLocationConverter-for-Android" target="_blank">https://github.com/hnyer/JZLocationConverter-for-Android</a></p>
<pre><code class="lang-text">&#x5728;&#x4E2D;&#x56FD;&#xFF0C;&#x4EFB;&#x4F55;&#x4E00;&#x4E2A;&#x5730;&#x56FE;&#x4EA7;&#x54C1;&#x81F3;&#x5C11;&#x4F7F;&#x7528;GCJ-02&#x8FDB;&#x884C;&#x9996;&#x6B21;&#x52A0;&#x5BC6;&#xFF0C;
&#x4E0D;&#x5141;&#x8BB8;&#x76F4;&#x63A5;&#x4F7F;&#x7528; WGS-84 &#x5750;&#x6807;&#x4E0B;&#x7684;&#x5730;&#x7406;&#x6570;&#x636E;&#xFF0C;&#x540C;&#x65F6;&#x4EFB;&#x4F55;&#x5750;&#x6807;&#x7CFB;&#x5747;&#x4E0D;&#x53EF;&#x8F6C;&#x6362;&#x4E3A; WGS-84 &#x5750;&#x6807;&#x3002;

&#x7F51;&#x4E0A;&#x6709;&#x4EBA;&#x603B;&#x7ED3;&#x53CD;&#x63A8;&#x7684;&#x4E00;&#x4E9B;&#x8F6C;&#x6362;&#x63A5;&#x53E3;&#xFF0C;&#x90FD;&#x662F;&#x6709;&#x504F;&#x5DEE;&#x7684;&#x3002;&#x5BF9;&#x7CBE;&#x5EA6;&#x975E;&#x5E38;&#x4E25;&#x683C;&#x7684;&#x4F7F;&#x7528;&#x573A;&#x666F;&#xFF0C;&#x8981;&#x614E;&#x91CD;&#x4F7F;&#x7528;&#x3002; 
&#x57FA;&#x4E8E; GCJ-02 &#x8F6C; WGS-84 &#x7684;&#x8F6C;&#x6362;&#x7ED3;&#x679C;&#x90FD;&#x6709;&#x504F;&#x5DEE;&#x3002;
&#x57FA;&#x4E8E; WGS-84 &#x8F6C; GCJ-02 &#x7684;&#x8F6C;&#x6362;&#x7ED3;&#x679C;&#x6CA1;&#x6709;&#x504F;&#x5DEE;&#x3002;

&#x6B63;&#x5728;&#x6574;&#x7406;&#xFF0C;&#x7B49;&#x5F85;&#x66F4;&#x65B0;...
</code></pre>
<h2 id="&#x9053;&#x683C;&#x62C9;&#x65AF;-&#x666E;&#x514B;&#xFF08;douglas-peuker-&#x62BD;&#x7A00;&#x7B97;&#x6CD5;"><a name="&#x9053;&#x683C;&#x62C9;&#x65AF;-&#x666E;&#x514B;&#xFF08;douglas-peuker-&#x62BD;&#x7A00;&#x7B97;&#x6CD5;" class="anchor-navigation-ex-anchor" href="#&#x9053;&#x683C;&#x62C9;&#x65AF;-&#x666E;&#x514B;&#xFF08;douglas-peuker-&#x62BD;&#x7A00;&#x7B97;&#x6CD5;"><i class="fa fa-link" aria-hidden="true"></i></a>1.6. &#x9053;&#x683C;&#x62C9;&#x65AF;-&#x666E;&#x514B;&#xFF08;Douglas-Peuker) &#x62BD;&#x7A00;&#x7B97;&#x6CD5;</h2>
<pre><code class="lang-text">/**
 * &#x9053;&#x683C;&#x62C9;&#x65AF;-&#x666E;&#x514B;&#x7B97;&#x6CD5;
 * double dMax =0.5 ;
 * localGeopoints =DouglasPeuckerTool.douglasPeucker(localGeopoints ,dMax) ;
 */
public class DouglasPeuckerTool {
    /**
     * &#x8BA1;&#x7B97;&#x4E24;&#x70B9;&#x8DDD;&#x79BB;&#x3002; &lt;br&gt;
     * gps &#x5750;&#x6807;&#x7CFB;&#x7684;&#x70B9; &#xFF0C; &#x8DDD;&#x79BB;&#x5355;&#x4F4D;&#x4E3A;&#x7C73;
     */
    private static double calculationDistance(double[] point1, double[] point2) {
        double lat1 = point1[0];
        double lat2 = point2[0];
        double lng1 = point1[1];
        double lng2 = point2[1];
        double radLat1 = lat1 * Math.PI / 180.0;
        double radLat2 = lat2 * Math.PI / 180.0;
        double a = radLat1 - radLat2;
        double b = (lng1 * Math.PI / 180.0) - (lng2 * Math.PI / 180.0);
        double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
        return s * 6370996.81;
    }

    /**
     * &#x8BA1;&#x7B97;&#x70B9; pX&#x5230;&#x70B9;pA&#x548C;pB&#x6240;&#x786E;&#x5B9A;&#x7684;&#x76F4;&#x7EBF;&#x7684;&#x8DDD;&#x79BB;.&lt;br&gt;
     * &#x8DDD;&#x79BB;&#x5355;&#x4F4D;&#x4E3A;&#x7C73;
     */
    private static double distToSegment(double[] start, double[] end, double[] center) {
        double a = Math.abs(calculationDistance(start, end));
        double b = Math.abs(calculationDistance(start, center));
        double c = Math.abs(calculationDistance(end, center));

        double p = (a + b + c) / 2.0;
        double s = Math.sqrt(Math.abs(p * (p - a) * (p - b) * (p - c)));
        return s * 2.0 / a;
    }

    /**
     * &#x9012;&#x5F52;&#x65B9;&#x5F0F;&#x5224;&#x65AD;&#x662F;&#x5426;&#x8981;&#x8FC7;&#x6EE4;&#x6389;&#x5BF9;&#x5E94;&#x7684;&#x70B9;
     */
    private static void compressLine(List&lt;double[]&gt; coordinate, List&lt;double[]&gt; result, int start, int end, double dMax) {
        if (start &lt; end) {
            double maxDist = 0;
            int currentIndex = 0;
            double[] startPoint = coordinate.get(start);
            double[] endPoint = coordinate.get(end);

            for (int i = start + 1; i &lt; end; i++) {
                double currentDist = distToSegment(startPoint, endPoint, coordinate.get(i));
                if (currentDist &gt; maxDist) {
                    maxDist = currentDist;
                    currentIndex = i;
                }
            }

            if (maxDist &gt;= dMax) {
                // &#x5982;&#x679C; &#x6700;&#x5927;&#x8DDD;&#x79BB;&#x8D85;&#x8FC7; &#x5141;&#x8BB8;&#x8D85;&#x8FC7;&#x7684;&#x6700;&#x5927;&#x8DDD;&#x79BB;&#xFF0C; &#x8FD9;&#x4E2A;&#x70B9;&#x4E0D;&#x5141;&#x8BB8;&#x8FC7;&#x6EE4;&#x6389;&#xFF0C;&#x9700;&#x8981;&#x4FDD;&#x7559;
                result.add(coordinate.get(currentIndex));
                //&#x5C06;&#x539F;&#x6765;&#x7684;&#x7EBF;&#x6BB5;&#x4EE5;&#x5F53;&#x524D;&#x70B9;&#x4E3A;&#x4E2D;&#x5FC3;&#x62C6;&#x6210;&#x4E24;&#x6BB5;&#xFF0C;&#x5206;&#x522B;&#x8FDB;&#x884C;&#x9012;&#x5F52;&#x5904;&#x7406;
                compressLine(coordinate, result, start, currentIndex, dMax); //left
                compressLine(coordinate, result, currentIndex, end, dMax); //right
            }
        }

    }

    /**
     * @param geoPoints &#x539F;&#x59CB;&#x70B9;(&#x7ECF;&#x7EAC;&#x5EA6;&#x5750;&#x6807;&#x7CFB;)
     * @param dMax  &#x5141;&#x8BB8;&#x6700;&#x5927;&#x8DDD;&#x79BB;&#x8BEF;&#x5DEE;&#xFF08;&#x5355;&#x4F4D;&#x7C73;&#xFF09;&#x3002; &#x5C0F;&#x4E8E;&#x8FD9;&#x4E2A;&#x503C;&#x7684;&#x70B9;&#x4F1A;&#x88AB;&#x629B;&#x5F03;&#xFF0C; dMax&#x8D8A;&#x5927;&#xFF0C;&#x62BD;&#x7684;&#x8D8A;&#x72E0;
     * @return  &#x62BD;&#x7A00;&#x540E;&#x7684;&#x70B9;
     */
    public static List&lt;GeoPoint&gt; douglasPeucker(List&lt;GeoPoint&gt; geoPoints, double dMax) {
        if (geoPoints == null ) {
            Log.e(&quot;DouglasPeuckerTool&quot; ,&quot;geoPoints &#x4E0D;&#x80FD;&#x4E3A;null&quot;) ;
            return new ArrayList&lt;&gt;();
        }

        if (geoPoints.size() &lt;= 2) {
            Log.e(&quot;DouglasPeuckerTool&quot; ,&quot;geoPoints &#x70B9;&#x6570;&#x4E0D;&#x80FD;&#x5C0F;&#x4E8E;2&quot;) ;
            return geoPoints;
        }

        List&lt;double[]&gt; coordinateInfos = new ArrayList&lt;&gt;();
        for(int i=0 ;i&lt; geoPoints.size() ;i++){
            GeoPoint geoPoint = geoPoints.get(i) ;
            double[] point = new double[3];
            point[0]= geoPoint.getLatitude();
            point[1]= geoPoint.getLongitude() ;
            point[2]= i;// &#x7528;&#x6765;&#x62BD;&#x7A00;&#x540E;&#x91CD;&#x65B0;&#x6392;&#x5E8F;
            coordinateInfos.add(point);
        }

        List&lt;double[]&gt; result = new ArrayList&lt;&gt;();
        compressLine(coordinateInfos, result, 0, coordinateInfos.size() - 1, dMax); // start

        // &#x786E;&#x4FDD;&#x7B2C;&#x4E00;&#x4E2A;&#x548C;&#x6700;&#x540E;&#x4E00;&#x4E2A;&#x70B9;&#x4E0D;&#x88AB;&#x8FC7;&#x6EE4;&#x6389;
        result.add(coordinateInfos.get(0));
        result.add(coordinateInfos.get(coordinateInfos.size() - 1));

        // &#x5C06;&#x6700;&#x540E;&#x7684;&#x70B9; &#x91CD;&#x65B0;&#x6392;&#x5E8F;
        Collections.sort(result, (dataA, dataB) -&gt; {
            if (dataA[2] &gt; dataB[2]) {
                return 1;
            } else if (dataA[2] &lt; dataB[2]) {
                return -1;
            }
            return 0;
        });


        List&lt;GeoPoint&gt; lastGeopoints = new ArrayList&lt;&gt;();
        for(double[] value : result){
            lastGeopoints.add(new GeoPoint(value[0 ],value[1]));
        }
        return lastGeopoints;
    }
}
</code></pre>
<h1 id="&#x9AD8;&#x5FB7;&#x5730;&#x56FE;"><a name="&#x9AD8;&#x5FB7;&#x5730;&#x56FE;" class="anchor-navigation-ex-anchor" href="#&#x9AD8;&#x5FB7;&#x5730;&#x56FE;"><i class="fa fa-link" aria-hidden="true"></i></a>2. &#x9AD8;&#x5FB7;&#x5730;&#x56FE;</h1>
<h2 id="&#x6839;&#x636E;&#x6307;&#x5B9A;&#x7ECF;&#x7EAC;&#x5EA6;&#x663E;&#x793A;&#x548C;&#x5BFC;&#x822A;"><a name="&#x6839;&#x636E;&#x6307;&#x5B9A;&#x7ECF;&#x7EAC;&#x5EA6;&#x663E;&#x793A;&#x548C;&#x5BFC;&#x822A;" class="anchor-navigation-ex-anchor" href="#&#x6839;&#x636E;&#x6307;&#x5B9A;&#x7ECF;&#x7EAC;&#x5EA6;&#x663E;&#x793A;&#x548C;&#x5BFC;&#x822A;"><i class="fa fa-link" aria-hidden="true"></i></a>2.1. &#x6839;&#x636E;&#x6307;&#x5B9A;&#x7ECF;&#x7EAC;&#x5EA6;&#x663E;&#x793A;&#x548C;&#x5BFC;&#x822A;</h2>
<pre><code class="lang-text">String.format(Locale.getDefault(), &quot;https://m.amap.com/share/index/lnglat=%f,%f&quot; ,  xx.longitude ,xx.latitude) ;
</code></pre>
<h2 id="&#x9690;&#x85CF;&#x5DE6;&#x4E0B;&#x89D2;logo"><a name="&#x9690;&#x85CF;&#x5DE6;&#x4E0B;&#x89D2;logo" class="anchor-navigation-ex-anchor" href="#&#x9690;&#x85CF;&#x5DE6;&#x4E0B;&#x89D2;logo"><i class="fa fa-link" aria-hidden="true"></i></a>2.2. &#x9690;&#x85CF;&#x5DE6;&#x4E0B;&#x89D2;Logo</h2>
<pre><code class="lang-text">// &#x9AD8;&#x5FB7;&#x5730;&#x56FE;&#x9690;&#x85CF;&#x5DE6;&#x4E0B;&#x89D2;Logo
UiSettings settings = aMap.getUiSettings();
settings.setLogoBottomMargin(-50);//&#x9AD8;&#x5FB7;logo&#x56FE;&#x6807;&#x65E0;&#x6CD5;&#x79FB;&#x9664; &#xFF0C;&#x4F46;&#x662F;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x8BBE;&#x7F6E;&#x504F;&#x79FB;&#x7684;&#x4F4D;&#x7F6E; &#x6765;&#x9690;&#x85CF;&#x5B83;
</code></pre>
<h2 id="&#x5730;&#x7406;&#x56F4;&#x680F;"><a name="&#x5730;&#x7406;&#x56F4;&#x680F;" class="anchor-navigation-ex-anchor" href="#&#x5730;&#x7406;&#x56F4;&#x680F;"><i class="fa fa-link" aria-hidden="true"></i></a>2.3. &#x5730;&#x7406;&#x56F4;&#x680F;</h2>
<pre><code class="lang-text">https://lbs.amap.com/api/android-location-sdk/guide/additional-func/local-geofence/
</code></pre>
<h2 id="&#x52A0;&#x8F7D;&#x8C37;&#x6B4C;&#x74E6;&#x7247;&#x5730;&#x56FE;&#x6570;&#x636E;"><a name="&#x52A0;&#x8F7D;&#x8C37;&#x6B4C;&#x74E6;&#x7247;&#x5730;&#x56FE;&#x6570;&#x636E;" class="anchor-navigation-ex-anchor" href="#&#x52A0;&#x8F7D;&#x8C37;&#x6B4C;&#x74E6;&#x7247;&#x5730;&#x56FE;&#x6570;&#x636E;"><i class="fa fa-link" aria-hidden="true"></i></a>2.4. &#x52A0;&#x8F7D;&#x8C37;&#x6B4C;&#x74E6;&#x7247;&#x5730;&#x56FE;&#x6570;&#x636E;</h2>
<p><a href="http://mt0.google.cn/vt/lyrs=y&amp;hl=en&amp;gl=en&amp;src=app&amp;x=6678&amp;y=3558&amp;z=13&amp;s=" target="_blank">http://mt0.google.cn/vt/lyrs=y&amp;hl=en&amp;gl=en&amp;src=app&amp;x=6678&amp;y=3558&amp;z=13&amp;s=</a>  // ok
<a href="http://mt0.google.cn/vt/lyrs=y&amp;x=6678&amp;y=3558&amp;z=13" target="_blank">http://mt0.google.cn/vt/lyrs=y&amp;x=6678&amp;y=3558&amp;z=13</a><br><a href="http://mt0.google.cn/vt/lyrs=y@110&amp;x=6678&amp;y=3558&amp;z=13" target="_blank">http://mt0.google.cn/vt/lyrs=y@110&amp;x=6678&amp;y=3558&amp;z=13</a>  </p>
<pre><code class="lang-text">&#x683C;&#x5F0F;
http://mt0.google.cn/vt/lyrs={lyrs}&amp;hl=en&amp;gl=en&amp;src=app&amp;x=%d&amp;y=%d&amp;z=%d&amp;s=
http://mt0.google.cn/vt/lyrs={lyrs}&amp;x=%d&amp;y=%d&amp;z=%d   // &#x4E00;&#x822C;&#x7528;&#x8FD9;&#x4E2A;&#x5C31;&#x53EF;&#x4EE5;&#x4E86;&#xFF0C;&#x4E0D;&#x9700;&#x8981;&#x5F88;&#x591A;&#x5176;&#x4ED6;&#x53C2;&#x6570;

// &#x670D;&#x52A1;&#x5668;&#x5730;&#x5740; &#xFF0C;&#x53EF;&#x9009;&#xFF0C;&#x6548;&#x679C;&#x90FD;&#x662F;&#x4E00;&#x6837;&#x7684;
http://mt0.google.cn
http://mt1.google.cn
http://mt2.google.cn
http://mt3.google.cn

// x &#x5217;&#x53F7; &#x3001;  y &#x884C;&#x53F7;  &#x3001; z  zoom&#x7EA7;&#x522B;
// hl :en &#x3001; zh-CN 
// gl : en &#x3001;cn
// src : &#x6807;&#x8BB0;&#x6765;&#x81EA;&#x54EA;&#x91CC;&#x7684;&#x8BF7;&#x6C42;&#xFF1F;
// s : &#x4F5C;&#x7528;&#x672A;&#x77E5;&#xFF0C;&#x53EF;&#x7528;&#x53EF;&#x4E0D;&#x7528;&#x3002;&#x968F;&#x4FBF;&#x586B; &#x3002;

// lyrs 
m&#xFF1A;&#x8DEF;&#x7EBF;&#x56FE;  
&#x200B;t&#xFF1A;&#x5730;&#x5F62;&#x56FE;  
&#x200B;s&#xFF1A;&#x536B;&#x661F;&#x56FE; 
&#x200B;p&#xFF1A;&#x5E26;&#x6807;&#x7B7E;&#x7684;&#x5730;&#x5F62;&#x56FE;  
&#x200B;y&#xFF1A;&#x5E26;&#x6807;&#x7B7E;&#x7684;&#x536B;&#x661F;&#x56FE;
&#x200B;h&#xFF1A;&#x6807;&#x7B7E;&#x5C42;&#xFF08;&#x8DEF;&#x540D;&#x3001;&#x5730;&#x540D;&#x7B49;&#xFF09;

&#x6211;&#x770B;&#x5230;&#x5176;&#x4ED6;&#x6709;&#x4E9B;&#x540E;&#x9762;&#x8DDF;&#x4E86;&#x4E2A;@&#x53C2;&#x6570;&#xFF0C;&#x6682;&#x65F6;&#x4E0D;&#x77E5;&#x9053;&#x4EC0;&#x4E48;&#x4F5C;&#x7528;&#x3002;lyrs=m@167000000 &#x3002;&#x4E0D;&#x7528;&#x8C8C;&#x4F3C;&#x4E5F;&#x6CA1;&#x6709;&#x95EE;&#x9898;&#x3002;
&#x7ECF;&#x8FC7;&#x6D4B;&#x8BD5;&#x53D1;&#x73B0; &#x8C37;&#x6B4C;&#x4E2D;&#x56FD;&#xFF0C;&#x9AD8;&#x5FB7; &#x90FD;&#x91C7;&#x7528;&#x4E86; &#x706B;&#x661F;&#x5750;&#x6807;&#x7CFB;&#x3002;&#x4E0D;&#x8FC7;&#x8C37;&#x6B4C;&#x4E2D;&#x56FD;&#x540C;&#x65F6;&#x4E5F;&#x63D0;&#x4F9B;&#x4E86; wgs84&#x5750;&#x6807;&#x7CFB;&#x65B9;&#x5F0F;&#x7684;&#x5730;&#x56FE;&#xFF0C;&#x53EA;&#x8981;&#x4FEE;&#x6539;&#x4E00;&#x4E2A;&#x53C2;&#x6570;&#x5373;&#x53EF;&#xFF0C;
&#x5C06;gl=cn&#x53BB;&#x6389;&#xFF0C;&#x5219;&#x4E0B;&#x8F7D;&#x7684;&#x5730;&#x56FE; &#x5C31;&#x53D8;&#x6210;&#x4E86; wgs84,&#x5426;&#x5219; &#x5219;&#x662F;&#x706B;&#x661F;&#x5750;&#x6807;&#x7CFB;&#x3002;
</code></pre>
<h2 id="&#x9AD8;&#x5FB7;&#x5730;&#x56FE;-&#x52A0;&#x8F7D;-mbtiles-&#x6587;&#x4EF6;"><a name="&#x9AD8;&#x5FB7;&#x5730;&#x56FE;-&#x52A0;&#x8F7D;-mbtiles-&#x6587;&#x4EF6;" class="anchor-navigation-ex-anchor" href="#&#x9AD8;&#x5FB7;&#x5730;&#x56FE;-&#x52A0;&#x8F7D;-mbtiles-&#x6587;&#x4EF6;"><i class="fa fa-link" aria-hidden="true"></i></a>2.5. &#x9AD8;&#x5FB7;&#x5730;&#x56FE; &#x52A0;&#x8F7D; .mbtiles &#x6587;&#x4EF6;</h2>
<p>mbtiles &#x6587;&#x4EF6;&#x5176;&#x5B9E;&#x5C31;&#x662F;&#x4E00;&#x4E2A; sqllite &#x6570;&#x636E;&#x5E93;&#x6587;&#x4EF6;&#x3002;&#x6B64;&#x5904;&#x7ED9;&#x51FA;&#x6211;&#x5199;&#x7684;&#x4E00;&#x4E2A;demo&#x3002;&#x5173;&#x952E;&#x70B9;&#x5728;&#x4E8E; y &#x5750;&#x6807;&#x7684;&#x8F6C;&#x6362;&#x3002;</p>
<pre><code class="lang-text">https://gitee.com/Aivin_CodeShare/android_tool_code/raw/master/MbTilesDataTool.java

&#x5982;&#x679C; &#x9AD8;&#x5FB7;&#x8981;&#x52A0;&#x8F7D;&#x56FD;&#x5916;&#x5730;&#x56FE;&#xFF0C;&#x9700;&#x8981; Mbtiles &#x662F;&#x4E2A;&#x6709;&#x504F;&#x79FB;&#x8FC7;&#x7684; &#x6570;&#x636E;&#x5E93;&#x3002;
&#x5982;&#x4F55;&#x7F16;&#x8F91;&#x548C;&#x751F;&#x6210; mbtiles &#x6587;&#x4EF6;&#x6682;&#x65F6;&#x6CA1;&#x6709;&#x7814;&#x7A76;&#x3002;&#x6682;&#x7531;&#x5BA2;&#x6237;&#x81EA;&#x5DF1;&#x63D0;&#x4F9B;&#x3002;
</code></pre>
<h2 id="&#x52A0;&#x8F7D;&#x82F1;&#x6587;&#x5730;&#x56FE;"><a name="&#x52A0;&#x8F7D;&#x82F1;&#x6587;&#x5730;&#x56FE;" class="anchor-navigation-ex-anchor" href="#&#x52A0;&#x8F7D;&#x82F1;&#x6587;&#x5730;&#x56FE;"><i class="fa fa-link" aria-hidden="true"></i></a>2.6. &#x52A0;&#x8F7D;&#x82F1;&#x6587;&#x5730;&#x56FE;</h2>
<pre><code class="lang-text">&#x81EA; Android 3D &#x5730;&#x56FE;SDK  V5.5.0&#x8D77;&#xFF0C;&#x5730;&#x56FE;&#x652F;&#x6301;&#x5207;&#x6362;&#x4E2D;&#x82F1;&#x6587;&#x663E;&#x793A;&#x3002;
AMap.CHINESE &#x8868;&#x793A;&#x4E2D;&#x6587;&#xFF0C;&#x5373;&quot;zh_cn&quot;, AMap.ENGLISH &#x8868;&#x793A;&#x82F1;&#x6587;&#xFF0C;&#x5373;&quot;en&quot; 
aMap.setMapLanguage(AMap.ENGLISH);
</code></pre>
<h2 id="&#x9AD8;&#x5FB7;&#x5730;&#x56FE;&#x5B9A;&#x4F4D;&#x4E0D;&#x51C6;&#x786E;&#x7684;&#x95EE;&#x9898;"><a name="&#x9AD8;&#x5FB7;&#x5730;&#x56FE;&#x5B9A;&#x4F4D;&#x4E0D;&#x51C6;&#x786E;&#x7684;&#x95EE;&#x9898;" class="anchor-navigation-ex-anchor" href="#&#x9AD8;&#x5FB7;&#x5730;&#x56FE;&#x5B9A;&#x4F4D;&#x4E0D;&#x51C6;&#x786E;&#x7684;&#x95EE;&#x9898;"><i class="fa fa-link" aria-hidden="true"></i></a>2.7. &#x9AD8;&#x5FB7;&#x5730;&#x56FE;&#x5B9A;&#x4F4D;&#x4E0D;&#x51C6;&#x786E;&#x7684;&#x95EE;&#x9898;</h2>
<pre><code class="lang-text">WkLogTool.showLog(&quot;&#x5B9A;&#x4F4D;&#x4FE1;&#x606F;= getAccuracy=&quot;+accuracy);
WkLogTool.showLog(&quot;&#x5B9A;&#x4F4D;&#x4FE1;&#x606F;= getLocationType=&quot;+type);
WkLogTool.showLog(&quot;&#x5B9A;&#x4F4D;&#x4FE1;&#x606F;= getLongitude=&quot; + aMapLocation.getLongitude() + &quot;,getLatitude=&quot; + aMapLocation.getLatitude()  ) ;
WkLogTool.showLog(&quot;&#x5B9A;&#x4F4D;&#x4FE1;&#x606F;=getLocationDetail=&quot;+aMapLocation.getLocationDetail());

&#x53EF;&#x4EE5;&#x5C06;&#x5B9A;&#x4F4D;&#x7C7B;&#x578B;&#x548C;&#x5B9A;&#x4F4D;&#x7CBE;&#x5EA6;&#x6253;&#x5370;&#x51FA;&#x6765;&#x770B;&#x770B;&#xFF0C;
&#x6709;&#x4E9B;&#x5730;&#x65B9;&#x592A;&#x504F;&#x50FB;&#x4E86;&#xFF0C;&#x57FA;&#x7AD9;&#x5B9A;&#x4F4D;&#x4E0D;&#x51C6;&#x786E;&#xFF0C;
&#x5C1D;&#x8BD5;&#x6362;&#x6210;gps&#x5B9A;&#x4F4D;&#x8BD5;&#x8BD5;&#x3002;
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Device_Sensors);

// &#x5B9A;&#x4F4D;&#x7C7B;&#x578B;&#x67E5;&#x770B;&#x8868;
https://lbs.amap.com/api/android-location-sdk/guide/utilities/location-type/
// &#x5B9A;&#x4F4D;SDK&#x9519;&#x8BEF;&#x7801;&#x5BF9;&#x7167;&#x8868;
https://lbs.amap.com/api/android-location-sdk/guide/utilities/errorcode/

&#x53E6;&#x5916;&#xFF0C;&#x4F60;&#x7684;APP&#x548C;&#x9AD8;&#x5FB7;&#x5730;&#x56FE;&#x5BF9;&#x6BD4;&#xFF0C;&#x9AD8;&#x5FB7;&#x5730;&#x56FE;&#x663E;&#x5F97;&#x4F1A;&#x66F4;&#x51C6;&#x786E;&#x4E00;&#x70B9;&#xFF0C;
&#x8DDF;&#x6280;&#x672F;&#x5BA2;&#x670D;&#x54A8;&#x8BE2;&#x8FC7;&#xFF0C;
&#x89E3;&#x91CA;&#x7684;&#x539F;&#x56E0;&#x662F;&#x9AD8;&#x5FB7;&#x5730;&#x56FE;&#x6709;&#x5BF9;&#x56DE;&#x8C03;&#x7684;&#x6570;&#x636E;&#x505A;&#x8FC7;&#x4E8C;&#x6B21;&#x8FC7;&#x6EE4;&#xFF0C;
&#x6BD4;&#x5982;&#x53BB;&#x6389;&#x7CBE;&#x5EA6;&#x592A;&#x5927;&#x7684;&#x6570;&#x636E;&#x7B49;&#x3002;

&#x53E6;&#x5916;&#x6CE8;&#x610F; AMapLocationListener &#x53EA;&#x80FD;&#x5355;&#x6B21;&#x56DE;&#x8C03;&#xFF0C;
&#x800C; locationManager.requestLocationUpdates(LocationListener) &#x53EF;&#x4EE5;&#x4E0D;&#x505C;&#x5730;&#x56DE;&#x8C03; &#x3002;

&#x6709;&#x4E9B;&#x624B;&#x673A;&#xFF0C;&#x4F8B;&#x5982;&#x5C0F;&#x7C73;9&#xFF0C;&#x7528;&#x7684;&#x5B9A;&#x4F4D;&#x65B9;&#x5F0F;&#x53EF;&#x80FD;&#x4E0D;&#x4E00;&#x6837;&#xFF0C;&#x5982;&#x679C;&#x4E0D;&#x5F00;&#x542F; setMockEnable(true) &#xFF0C;
&#x5C31;&#x4F1A;&#x5B9A;&#x4F4D;&#x5931;&#x8D25;&#xFF0C;&#x8FD4;&#x56DE;&#x9519;&#x8BEF;&#x7801;&#x4E3A; 
&#x201C; ErrCode:15, errInfo:&#x5F53;&#x524D;&#x8FD4;&#x56DE;&#x4F4D;&#x7F6E;&#x4E3A;&#x6A21;&#x62DF;&#x8F6F;&#x4EF6;&#x8FD4;&#x56DE;&#xFF0C;&#x8BF7;&#x5173;&#x95ED;&#x6A21;&#x62DF;&#x8F6F;&#x4EF6;&#xFF0C;&#x6216;&#x8005;&#x5728;option&#x4E2D;&#x8BBE;&#x7F6E;&#x5141;&#x8BB8;&#x6A21;&#x62DF;&#x201D;
</code></pre>
<h2 id="&#x591A;&#x8FB9;&#x5F62;&#x8BA1;&#x7B97;"><a name="&#x591A;&#x8FB9;&#x5F62;&#x8BA1;&#x7B97;" class="anchor-navigation-ex-anchor" href="#&#x591A;&#x8FB9;&#x5F62;&#x8BA1;&#x7B97;"><i class="fa fa-link" aria-hidden="true"></i></a>2.8. &#x591A;&#x8FB9;&#x5F62;&#x8BA1;&#x7B97;</h2>
<pre><code class="lang-text">AMapUtils
public static float calculateArea(java.util.List&lt;LatLng&gt; points)
&#x4ECE; 6.0.0 &#x7248;&#x672C;&#x5F00;&#x59CB;&#x652F;&#x6301;&#x591A;&#x8FB9;&#x5F62;&#x7684;&#x9762;&#x79EF;&#x8BA1;&#x7B97;&#x3002;
&#x5C0F;&#x4E8E; 6.0&#x7684;sdk &#xFF0C;&#x53EA;&#x652F;&#x6301;&#x77E9;&#x5F62;&#x7684;&#x9762;&#x79EF;&#x8BA1;&#x7B97;&#x3002;

&#x5982;&#x679C;&#x4F60;&#x7684;sdk&#x7248;&#x672C;&#x5C0F;&#x4E8E;6.0 &#x53C8;&#x60F3;&#x8BA1;&#x7B97;&#x591A;&#x8FB9;&#x5F62;&#x7684;&#x9762;&#x79EF;&#xFF0C;
&#x53EF;&#x4EE5;&#x7F51;&#x4E0A;&#x641C;&#x7D22;&#x4E00;&#x4E0B;&#x591A;&#x8FB9;&#x5F62;&#x7684;&#x9762;&#x79EF;&#x7684;&#x8BA1;&#x7B97;&#x3002;
</code></pre>
<h2 id="&#x5730;&#x56FE;&#x5BFC;&#x822A;-&#x4E0D;&#x662F;&#x771F;&#x7684;&#x5BFC;&#x822A;"><a name="&#x5730;&#x56FE;&#x5BFC;&#x822A;-&#x4E0D;&#x662F;&#x771F;&#x7684;&#x5BFC;&#x822A;" class="anchor-navigation-ex-anchor" href="#&#x5730;&#x56FE;&#x5BFC;&#x822A;-&#x4E0D;&#x662F;&#x771F;&#x7684;&#x5BFC;&#x822A;"><i class="fa fa-link" aria-hidden="true"></i></a>2.9. &#x5730;&#x56FE;&#x5BFC;&#x822A; (&#x4E0D;&#x662F;&#x771F;&#x7684;&#x5BFC;&#x822A;)</h2>
<pre><code class="lang-text">&#x8FD9;&#x91CC;&#x8BF4;&#x7684;&#x5BFC;&#x822A;&#x4E0D;&#x662F;&#x5730;&#x56FE;APP&#x7684;&#x90A3;&#x79CD;&#x5BFC;&#x822A;&#xFF0C;&#x5E76;&#x6CA1;&#x6709;&#x8BED;&#x97F3;&#x548C;&#x8DEF;&#x7EBF;&#x89C4;&#x5212;&#x7B49;&#x3002;
&#x5B9E;&#x9645;&#x5E94;&#x7528;&#x573A;&#x666F;&#x4E3A;&#xFF1A;
&#x65E0;&#x4EBA;&#x673A;&#x7684;&#x65B9;&#x5411;&#x5728;&#x4E0D;&#x505C;&#x53D8;&#x5316;&#x7684;&#xFF0C;
&#x5728;&#x5730;&#x56FE;&#x4E0A;&#x8868;&#x73B0;&#x4E3A; &#x673A;&#x5934;&#x4E00;&#x76F4;&#x671D;&#x5317;&#xFF0C;&#x8BA9;&#x5730;&#x56FE;&#x4E00;&#x76F4;&#x5728;&#x65CB;&#x8F6C;&#x3002;
&#x8BE6;&#x7EC6;&#x4E1A;&#x52A1;&#x4EE3;&#x7801;&#x53EF;&#x4EE5;&#x53C2;&#x8003; R400 &#x3002;
@Override
public void onCameraChange(CameraPosition cameraPosition) {
    bearingByMap =cameraPosition.bearing  ;
    updateMarkerOrMapAngle(true);  
}

private void updateFlyingLocationMaker(LatLng latLngTemp) {
// &#x98DE;&#x63A7;&#x4E0D;&#x65AD;&#x4E0B;&#x53D1;&#x673A;&#x5934;&#x65B9;&#x5411;&#x548C;&#x5750;&#x6807;
    updateMarkerOrMapAngle(false) ;  
}

// &#x65CB;&#x8F6C;&#x5730;&#x56FE; &#x6216;&#x8005;&#x65CB;&#x8F6C;&#x98DE;&#x673A;&#x56FE;&#x6807;
private void updateMarkerOrMapAngle(boolean fromOnCameraChange){
    // &#x5730;&#x56FE;&#x5BFC;&#x822A;&#x6A21;&#x5F0F;&#x4E0B;&#x5DF2;&#x7ECF;&#x7981;&#x6B62;&#x7528;&#x6237;&#x65CB;&#x8F6C;&#x5730;&#x56FE;&#xFF0C;&#x6240;&#x4EE5;&#x4E0D;&#x7528;&#x8003;&#x8651; fromOnCameraChange
    if(isMapAutoMoveToFlyLocation){
        aMap.moveCamera( CameraUpdateFactory.changeBearing(planeYawAngle) );
    }
    if(flightMarker!=null){
        float lastAngle =  -planeYawAngle + bearingByMap;
        flightMarker.setRotateAngle( lastAngle);
    }
}

// &#x624B;&#x52A8;&#x65CB;&#x8F6C;&#x6A21;&#x5F0F;&#x8F6C;&#x4E3A;&#x81EA;&#x52A8;&#x5BFC;&#x822A;&#x6A21;&#x5F0F;&#x65F6;&#xFF0C;&#x9700;&#x8981;&#x628A;&#x673A;&#x5934;&#x56FE;&#x6807;&#x6307;&#x5411;&#x5317;&#x65B9;
public void handMode2AutoMode(){
    float markerAngle = flightMarker.getRotateAngle() ; // &#x7BAD;&#x5934;&#x7684;&#x89D2;&#x5EA6;
    float mapWantAngle = bearingByMap + markerAngle ; //&#x5730;&#x56FE;&#x5F53;&#x524D;&#x7684;&#x89D2;&#x5EA6;
    aMap.moveCamera( CameraUpdateFactory.changeBearing(mapWantAngle) );
    aMap.moveCamera(CameraUpdateFactory.changeLatLng(flightMarker.getPosition()));
    aMap.moveCamera(CameraUpdateFactory.zoomTo(aMap.getMaxZoomLevel()));
}
</code></pre>
<h2 id="&#x4E2D;&#x56FD;&#x7981;&#x98DE;&#x533A;"><a name="&#x4E2D;&#x56FD;&#x7981;&#x98DE;&#x533A;" class="anchor-navigation-ex-anchor" href="#&#x4E2D;&#x56FD;&#x7981;&#x98DE;&#x533A;"><i class="fa fa-link" aria-hidden="true"></i></a>2.10. &#x4E2D;&#x56FD;&#x7981;&#x98DE;&#x533A;</h2>
<pre><code class="lang-text">&#x5927;&#x7586;&#x7981;&#x98DE;&#x533A;&#x67E5;&#x8BE2;
https://www.dji.com/cn/flysafe/geo-map

&#x4F18;&#x51EF;&#x9650;&#x98DE;&#x533A;&#x67E5;&#x8BE2;&#x4E0E;&#x4E0B;&#x8F7D;
http://xianfei.u-care.net.cn/#/downLoad 


&#x5728;&#x7EBF;&#x5BFC;&#x5165;kml&#x67E5;&#x770B;&#x6548;&#x679C;&#x56FE;
http://geojson.io/#map=2/20.0/0.0

Java&#x4E3B;&#x8981;&#x7528;dom4j&#x5305;&#x89E3;&#x6790;kml&#x6587;&#x4EF6;&#x3002;
</code></pre>
<h2 id="&#x7ECF;&#x7EAC;&#x5EA6;&#x53CD;&#x67E5;&#x5730;&#x5740;"><a name="&#x7ECF;&#x7EAC;&#x5EA6;&#x53CD;&#x67E5;&#x5730;&#x5740;" class="anchor-navigation-ex-anchor" href="#&#x7ECF;&#x7EAC;&#x5EA6;&#x53CD;&#x67E5;&#x5730;&#x5740;"><i class="fa fa-link" aria-hidden="true"></i></a>2.11. &#x7ECF;&#x7EAC;&#x5EA6;&#x53CD;&#x67E5;&#x5730;&#x5740;</h2>
<pre><code class="lang-text">https://lbs.amap.com/tools/picker  // &#x9AD8;&#x5FB7;
https://www.earthol.com/     // &#x5730;&#x7403;&#x5728;&#x7EBF;
</code></pre>
<h1 id="osmdroid"><a name="osmdroid" class="anchor-navigation-ex-anchor" href="#osmdroid"><i class="fa fa-link" aria-hidden="true"></i></a>3. osmdroid</h1>
<pre><code class="lang-text">OpenStreetMap &#xFF0C;&#x7B80;&#x79F0; osm &#xFF0C;&#x662F;&#x4E00;&#x4E2A;&#x5F00;&#x6E90;&#x7684;&#x5730;&#x56FE;&#x6846;&#x67B6;&#x3002;

&#x6B64;&#x5916; osm &#x5F00;&#x653E;&#x81EA;&#x5DF1;&#x4E86;&#x4E00;&#x4E9B;&#x5730;&#x56FE;&#x670D;&#x52A1;&#xFF0C;
&#x4E00;&#x822C;&#x7684;&#x5546;&#x4E1A;&#x6570;&#x636E;&#x4EF7;&#x683C;&#x6602;&#x8D35;&#xFF0C;&#x5E76;&#x4E14;&#x5E94;&#x7528;&#x6709;&#x8BF8;&#x591A;&#x9650;&#x5236;&#xFF0C;&#x800C;osm &#x6570;&#x636E;&#x7684;&#x4F7F;&#x7528;&#x51E0;&#x4E4E;&#x6CA1;&#x6709;&#x4EC0;&#x4E48;&#x9650;&#x5236;&#xFF0C;&#x53EA;&#x8981;&#x6709;&#x76F8;&#x5173;&#x7684;&#x58F0;&#x660E;&#x5373;&#x53EF;&#x3002;

Osmdroid &#x662F;&#x4E00;&#x6B3E;&#x5B8C;&#x5168;&#x5F00;&#x6E90;&#x7684;&#x5730;&#x56FE;SDK&#xFF0C;
&#x76F8;&#x6BD4;&#x4E8E;&#x73B0;&#x5728;&#x666E;&#x904D;&#x4F7F;&#x7528;&#x7684;&#x767E;&#x5EA6;&#x5730;&#x56FE;&#xFF0C;&#x9AD8;&#x5FB7;&#x5730;&#x56FE;&#xFF0C;&#x8C37;&#x6B4C;&#x5730;&#x56FE;&#x7B49;&#xFF0C;&#x6700;&#x5927;&#x7684;&#x597D;&#x5904;&#x5C31;&#x662F;&#x5F00;&#x6E90;&#x3002;
&#x652F;&#x6301;&#x52A0;&#x8F7D;&#x5728;&#x7EBF;&#x5730;&#x56FE;&#x548C;&#x52A0;&#x8F7D;&#x672C;&#x5730;&#x5730;&#x56FE;&#xFF0C;OSM &#x53EF;&#x4EE5;&#x6EE1;&#x8DB3;&#x57FA;&#x672C;&#x4E1A;&#x52A1;&#x9700;&#x6C42;&#xFF0C;&#x7531;&#x4E8E;&#x5F00;&#x6E90;&#xFF0C;&#x6240;&#x4EE5;&#x66F4;&#x52A0;&#x7075;&#x6D3B;&#x3002;
</code></pre>
<h2 id="osm-&#x76F8;&#x5173;&#x6587;&#x6863;"><a name="osm-&#x76F8;&#x5173;&#x6587;&#x6863;" class="anchor-navigation-ex-anchor" href="#osm-&#x76F8;&#x5173;&#x6587;&#x6863;"><i class="fa fa-link" aria-hidden="true"></i></a>3.1. osm &#x76F8;&#x5173;&#x6587;&#x6863;</h2>
<p><a href="https://wiki.openstreetmap.org/wiki/Zh-hans:Main_Page" target="_blank">wiki&#x6587;&#x6863;</a>  <br>
<a href="https://osmdroid.github.io/osmdroid/" target="_blank">github&#x6587;&#x6863;</a>  <br>
<a href="https://github.com/osmdroid/osmdroid" target="_blank">github&#x6258;&#x7BA1;&#x6E90;&#x7801;</a>  <br></p>
<h2 id="osm&#x53D1;&#x5C55;&#x5386;&#x53F2;"><a name="osm&#x53D1;&#x5C55;&#x5386;&#x53F2;" class="anchor-navigation-ex-anchor" href="#osm&#x53D1;&#x5C55;&#x5386;&#x53F2;"><i class="fa fa-link" aria-hidden="true"></i></a>3.2. osm&#x53D1;&#x5C55;&#x5386;&#x53F2;</h2>
<pre><code class="lang-text">2004&#x5E74;7&#x6708;&#xFF0C;OpenStreetMap &#x7531;&#x53F2;&#x8482;&#x592B;&#xB7;&#x514B;&#x65AF;&#x7279;&#x521B;&#x5EFA;&#x3002;
2006&#x5E74;4&#x6708;&#xFF0C;&#x8BBE;&#x7ACB; OpenStreetMap &#x57FA;&#x91D1;&#x4F1A;&#xFF0C;&#x9F13;&#x52B1;&#x81EA;&#x7531;&#x5730;&#x7406;&#x6570;&#x636E;&#x7684;&#x53D1;&#x5C55;&#x548C;&#x8F93;&#x51FA;&#x3002;
2006&#x5E74;12&#x6708;&#xFF0C;&#x96C5;&#x864E;&#x5141;&#x8BB8; OpenStreetMap &#x4F7F;&#x7528;&#x8BE5;&#x7AD9;&#x7684;&#x822A;&#x7A7A;&#x6444;&#x5F71;&#x76F8;&#x7247;&#x4F5C;&#x4E3A;&#x7F16;&#x8F91;&#x7684;&#x6839;&#x636E;&#x3002;
2007&#x5E74;4&#x6708;&#xFF0C;&#x6C7D;&#x8F66;&#x5BFC;&#x822A;&#x6570;&#x636E; AutomotiveNavigationData(AND) &#x4E3A;&#x8FD9;&#x4E2A;&#x9879;&#x76EE;&#x6350;&#x8D60;&#x4E86;&#x4E00;&#x5957;&#x5B8C;&#x6574;&#x7684;&#x8377;&#x5170;&#x548C;&#x4E2D;&#x56FD;&#x7684;&#x9053;&#x8DEF;&#x6570;&#x636E;&#x548C;&#x4E3B;&#x5E72;&#x9053;&#x8DEF;&#x7684;&#x6570;&#x636E;&#x3002;
2007&#x5E74;7&#x6708;&#xFF0C;&#x5F53;&#x7B2C;&#x4E00;&#x6B21; OSM &#x7684;&#x56FD;&#x9645;&#x56FD;&#x5BB6;&#x5730;&#x56FE;&#x7684;&#x4F1A;&#x8BAE;&#x4E3E;&#x884C;&#x7684;&#x65F6;&#x5019; ,OSM &#x5171;&#x6709;9000&#x540D;&#x6CE8;&#x518C;&#x7528;&#x6237;&#x3002;&#x6D3B;&#x52A8;&#x8D5E;&#x52A9;&#x5546;&#x7684;&#x5305;&#x62EC;&#x8C37;&#x6B4C;&#xFF0C;&#x96C5;&#x864E;&#x548C; Multimap&#x3002;
2007&#x5E74;8&#x6708;&#x4E00;&#x4E2A;&#x72EC;&#x7ACB;&#x9879;&#x76EE;&#xFF0C;OpenAerialMap &#xFF0C;&#x8D77;&#x52A8;&#x540E;&#xFF0C;&#x4E3A;&#x4E86;&#x7A7A;&#x4E2D;&#x6444;&#x5F71;&#x53EF;&#x4EE5;&#x4FDD;&#x6301;&#x5F00;&#x653E;&#x5F0F;&#x8BB8;&#x53EF;&#xFF0C;2007&#x5E74;10&#x6708; OpenStreetMa p&#x5B8C;&#x6210;&#x4E86;&#x4E00;&#x4E2A;&#x53EB;&#x8001;&#x864E;&#x7684;&#x7F8E;&#x56FD;&#x9053;&#x8DEF;&#x666E;&#x67E5;&#x6570;&#x636E;&#x96C6;&#x7684;&#x8F93;&#x5165;&#x3002;
2007&#x5E74;12&#x6708;&#x725B;&#x6D25;&#x5927;&#x5B66;&#x6210;&#x4E3A;&#x7B2C;&#x4E00;&#x4E2A;&#x5728;&#x4ED6;&#x4EEC;&#x4E3B;&#x8981;&#x7F51;&#x7AD9;&#x4F7F;&#x7528;&#x7684; OpenStreetMap &#x6570;&#x636E;&#x7684;&#x91CD;&#x8981;&#x673A;&#x6784;&#x3002;
2010&#x5E74;11&#x6708;24&#x65E5;&#xFF0C;&#x5FAE;&#x8F6F;&#x5BA3;&#x5E03;&#xFF0C;&#x5F00;&#x653E; BingMaps &#x7A7A;&#x7167;&#x56FE; (aerialphotos) &#x7ED9;&#x8BE5;&#x9879;&#x516C;&#x5F00;&#x7A0B;&#x5F0F;&#x7801;&#x8BA1;&#x5212;&#x7684;&#x53C2;&#x4E88;&#x8005;&#xFF0C;&#x5E76;&#x516C;&#x5E03;&#x8BE5;&#x516C;&#x53F8;&#x8058;&#x96C7;&#x53F2;&#x8482;&#x592B;&#xB7;&#x514B;&#x65AF;&#x7279;&#x4E3A; BingMobile &#x7684;&#x4E13;&#x4EFB;&#x8BBE;&#x8BA1;&#x5DE5;&#x7A0B;&#x5E08;&#x3002;
2012&#x5E74;4&#x6708;&#xFF0C;&#x7EE7;&#x82F9;&#x679C;&#x548C; Foursquare &#x76F8;&#x7EE7;&#x653E;&#x5F03;&#x4F7F;&#x7528;&#x8C37;&#x6B4C;&#x5730;&#x56FE;&#x540E;&#xFF0C;&#x7EF4;&#x57FA;&#x767E;&#x79D1;&#x4E5F;&#x653E;&#x5F03;&#x4F7F;&#x7528;&#x8C37;&#x6B4C;&#x5730;&#x56FE;&#xFF0C;&#x8F6C;&#x5411;&#x4F7F;&#x7528; OpenStreetMap &#x3002;
</code></pre>
<h2 id="osm-&#x5E38;&#x7528;&#x7C7B;"><a name="osm-&#x5E38;&#x7528;&#x7C7B;" class="anchor-navigation-ex-anchor" href="#osm-&#x5E38;&#x7528;&#x7C7B;"><i class="fa fa-link" aria-hidden="true"></i></a>3.3. osm &#x5E38;&#x7528;&#x7C7B;</h2>
<h3 id="configuration"><a name="configuration" class="anchor-navigation-ex-anchor" href="#configuration"><i class="fa fa-link" aria-hidden="true"></i></a>3.3.1. Configuration</h3>
<pre><code class="lang-text">Configuration.getInstance().load(ctx, PreferenceManager.getDefaultSharedPreferences(ctx));
Configuration.getInstance().setCacheMapTileCount(tileCount); //&#x8BBE;&#x7F6E;&#x521D;&#x59CB;&#x5185;&#x5B58;&#x7F13;&#x5B58;&#x5927;&#x5C0F;&#x74E6;&#x7247;&#x7684;&#x591A;&#x5C11;&#xFF0C;&#x6700;&#x5C11;&#x662F;3*3
Configuration.getInstance().setCacheMapTileOvershoot(tileOverCount);//&#x8BBE;&#x7F6E;&#x77E2;&#x91CF;&#x8986;&#x76D6;&#x7269;&#x8D85;&#x51FA;&#x7684;&#x7F13;&#x5B58;&#x6570;&#x91CF;
Configuration.getInstance().setTileFileSystemMaxQueueSize(maxQueueSize);
</code></pre>
<h3 id="mapview"><a name="mapview" class="anchor-navigation-ex-anchor" href="#mapview"><i class="fa fa-link" aria-hidden="true"></i></a>3.3.2. MapView</h3>
<pre><code class="lang-text">This is the primary view for osmdroid.
</code></pre>
<h3 id="onlinetilesourcebase"><a name="onlinetilesourcebase" class="anchor-navigation-ex-anchor" href="#onlinetilesourcebase"><i class="fa fa-link" aria-hidden="true"></i></a>3.3.3. OnlineTileSourceBase</h3>
<pre><code class="lang-text">&#x83B7;&#x53D6;&#x5728;&#x7EBF;&#x74E6;&#x7247;&#x8D44;&#x6E90;&#xFF0C;&#x57FA;&#x672C;&#x7684;&#x56FE;&#x5C42;&#x56FE;&#x7247;
</code></pre>
<h3 id="maptileproviderbasic"><a name="maptileproviderbasic" class="anchor-navigation-ex-anchor" href="#maptileproviderbasic"><i class="fa fa-link" aria-hidden="true"></i></a>3.3.4. MapTileProviderBasic</h3>
<pre><code class="lang-text">```

### TilesOverlay
```text
</code></pre>
<h3 id="overlaymanager"><a name="overlaymanager" class="anchor-navigation-ex-anchor" href="#overlaymanager"><i class="fa fa-link" aria-hidden="true"></i></a>3.3.5. OverlayManager</h3>
<pre><code class="lang-text">org.osmdroid.views.overlay.OverlayManager 
public interface OverlayManager extends List&lt;Overlay&gt;  ...
&#x4E00;&#x4E2A;&#x63A5;&#x53E3;&#xFF0C;&#x4E00;&#x822C;&#x7528;&#x6765;&#x7ED9;&#x67D0;&#x79CD;&#x56FE;&#x5C42;&#x6DFB;&#x52A0;&#x5230;&#x6307;&#x5B9A;&#x7684;&#x56FE;&#x5C42;&#x5217;&#x8868;&#x7684;&#x67D0;&#x4E2A;&#x4F4D;&#x7F6E;
map.getOverlayManager().add(1, tilesOverlay);
</code></pre>
<h3 id="marker"><a name="marker" class="anchor-navigation-ex-anchor" href="#marker"><i class="fa fa-link" aria-hidden="true"></i></a>3.3.6. Marker</h3>
<pre><code class="lang-text">org.osmdroid.views.overlay.Marker
</code></pre>
<h3 id="polyline"><a name="polyline" class="anchor-navigation-ex-anchor" href="#polyline"><i class="fa fa-link" aria-hidden="true"></i></a>3.3.7. Polyline</h3>
<pre><code class="lang-text">org.osmdroid.views.overlay.Polyline
</code></pre>
<h3 id="polygon"><a name="polygon" class="anchor-navigation-ex-anchor" href="#polygon"><i class="fa fa-link" aria-hidden="true"></i></a>3.3.8. Polygon</h3>
<pre><code class="lang-text">org.osmdroid.views.overlay.Polygon
</code></pre>
<h3 id="dashpatheffect"><a name="dashpatheffect" class="anchor-navigation-ex-anchor" href="#dashpatheffect"><i class="fa fa-link" aria-hidden="true"></i></a>3.3.9. DashPathEffect</h3>
<pre><code class="lang-text">//
</code></pre>
<h3 id="milestonemanager"><a name="milestonemanager" class="anchor-navigation-ex-anchor" href="#milestonemanager"><i class="fa fa-link" aria-hidden="true"></i></a>3.3.10. MilestoneManager</h3>
<pre><code class="lang-text">//
</code></pre>
<h3 id="&#x5176;&#x4ED6;"><a name="&#x5176;&#x4ED6;" class="anchor-navigation-ex-anchor" href="#&#x5176;&#x4ED6;"><i class="fa fa-link" aria-hidden="true"></i></a>3.3.11. &#x5176;&#x4ED6;</h3>
<pre><code class="lang-text">MilestoneManager
// MilestoneManager ,&#x4E00;&#x4E2A;&#x516C;&#x91CC;&#x4E00;&#x4E2A;&#x56DE;&#x8C03; , &#x8FD9;&#x91CC;&#x8FDB;&#x884C; 10000 &#x4E2A;&#x516C;&#x91CC;&#x7684;&#x56DE;&#x8C03;&#xFF0C;&#x5229;&#x7528;&#x503C;&#x52A8;&#x753B;&#x6765;&#x8FDB;&#x884C;&#x6E10;&#x53D8;&#xFF0C;&#x5B9E;&#x73B0;&#x4E0D;&#x505C;&#x56DE;&#x8C03;

MilestoneLineDisplayer
// Display lines between milestone steps

MilestoneBitmapDisplayer
// Displayer of `MilestoneStep`s as `Bitmap`s 

MilestoneMeterDistanceLister
// Listing every given meters of the `Path` 

MilestoneVertexLister
// Listing every vertex 

MilestonePathDisplayer
// Displayer of `MilestoneStep`s as `Path`s

MilestoneDisplayer
// Displayer of `MilestoneStep`s
</code></pre>
<h2 id="osm-&#x79BB;&#x7EBF;&#x5730;&#x56FE;"><a name="osm-&#x79BB;&#x7EBF;&#x5730;&#x56FE;" class="anchor-navigation-ex-anchor" href="#osm-&#x79BB;&#x7EBF;&#x5730;&#x56FE;"><i class="fa fa-link" aria-hidden="true"></i></a>3.4. osm &#x79BB;&#x7EBF;&#x5730;&#x56FE;</h2>
<pre><code class="lang-text">&#x79BB;&#x7EBF;&#x6570;&#x636E;&#xFF0C;&#x652F;&#x6301;&#x7684;&#x683C;&#x5F0F;&#x6709;  zip &#x3001; sqlite &#x3001; mbtiles &#x3001; gemf
</code></pre>
<h2 id="&#x5730;&#x56FE;&#x4E0A;&#x6DFB;&#x52A0;&#x81EA;&#x5B9A;&#x4E49;&#x5E03;&#x5C40;"><a name="&#x5730;&#x56FE;&#x4E0A;&#x6DFB;&#x52A0;&#x81EA;&#x5B9A;&#x4E49;&#x5E03;&#x5C40;" class="anchor-navigation-ex-anchor" href="#&#x5730;&#x56FE;&#x4E0A;&#x6DFB;&#x52A0;&#x81EA;&#x5B9A;&#x4E49;&#x5E03;&#x5C40;"><i class="fa fa-link" aria-hidden="true"></i></a>3.5. &#x5730;&#x56FE;&#x4E0A;&#x6DFB;&#x52A0;&#x81EA;&#x5B9A;&#x4E49;&#x5E03;&#x5C40;</h2>
<pre><code class="lang-text">public void addCustomView(View view){
    if(geoPointListForMakers==null || geoPointListForMakers.size()&lt;=0){
        return;
    }

    GeoPoint location =  geoPointListForMakers.get(0);
    MapView.LayoutParams lp = new MapView.LayoutParams(
            MapView.LayoutParams.WRAP_CONTENT,
            MapView.LayoutParams.WRAP_CONTENT, location,
            MapView.LayoutParams.CENTER, 0, 0);
    mapView.addView(view,lp);
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            //mapView.removeView(view);
        }
    }, 3000);
}
</code></pre>
<h2 id="polyline-&#x7EBF;&#x6761;&#x8DD1;&#x9A6C;&#x706F;&#x6548;&#x679C;"><a name="polyline-&#x7EBF;&#x6761;&#x8DD1;&#x9A6C;&#x706F;&#x6548;&#x679C;" class="anchor-navigation-ex-anchor" href="#polyline-&#x7EBF;&#x6761;&#x8DD1;&#x9A6C;&#x706F;&#x6548;&#x679C;"><i class="fa fa-link" aria-hidden="true"></i></a>3.6. Polyline &#x7EBF;&#x6761;&#x8DD1;&#x9A6C;&#x706F;&#x6548;&#x679C;</h2>
<pre><code class="lang-text">offset+= 10 ;
testLine.getOutlinePaint().setPathEffect(new DashPathEffect(new float[]{15, 15}, offset));
&#x4FEE;&#x6539;&#x865A;&#x7EBF;&#x7684;&#x504F;&#x79FB;&#x91CF;&#x5373;&#x53EF;&#x3002;
</code></pre>
<h2 id="&#x76D1;&#x542C;&#x5730;&#x56FE;-&#x70B9;&#x51FB;-&#x548C;-&#x957F;&#x6309;"><a name="&#x76D1;&#x542C;&#x5730;&#x56FE;-&#x70B9;&#x51FB;-&#x548C;-&#x957F;&#x6309;" class="anchor-navigation-ex-anchor" href="#&#x76D1;&#x542C;&#x5730;&#x56FE;-&#x70B9;&#x51FB;-&#x548C;-&#x957F;&#x6309;"><i class="fa fa-link" aria-hidden="true"></i></a>3.7. &#x76D1;&#x542C;&#x5730;&#x56FE; &#x70B9;&#x51FB; &#x548C; &#x957F;&#x6309;</h2>
<pre><code class="lang-text">public void addMapEventOverlay( ){
    mapView.getOverlays().add( new MapEventsOverlay(new MapEventsReceiver(){
        @Override
        public boolean singleTapConfirmedHelper(GeoPoint p) {
            // &#x5355;&#x51FB;&#x5730;&#x56FE;
            return false;
        }
        @Override
        public boolean longPressHelper(GeoPoint p) {
            // &#x957F;&#x6309;&#x5730;&#x56FE;
            return false;
        }
    }) );
}
</code></pre>
<h2 id="&#x7ED8;&#x5236;&#x865A;&#x7EBF;"><a name="&#x7ED8;&#x5236;&#x865A;&#x7EBF;" class="anchor-navigation-ex-anchor" href="#&#x7ED8;&#x5236;&#x865A;&#x7EBF;"><i class="fa fa-link" aria-hidden="true"></i></a>3.8. &#x7ED8;&#x5236;&#x865A;&#x7EBF;</h2>
<pre><code class="lang-text">&#x7ED9; &#x753B;&#x7B14;&#x8BBE;&#x7F6E;&#x4E00;&#x4E2A;&#x865A;&#x7EBF;&#x53C2;&#x6570;&#x5373;&#x53EF; &#xFF0C;&#x4F46;&#x662F;&#x6CE8;&#x610F;&#xFF1A;&#x7ED8;&#x5236;&#x865A;&#x7EBF;&#x6BD4;&#x5B9E;&#x7EBF;&#x66F4;&#x8017;&#x6027;&#x80FD;
// &#x6CE8;&#x610F;&#x5C06; DashPathEffect &#x7684;&#x53C2;&#x6570;&#x8BBE;&#x7F6E;&#x5927;&#x4E00;&#x70B9;&#xFF0C;&#x5426;&#x5219;&#x56E0;&#x4E3A;&#x95F4;&#x9694;&#x592A;&#x5C0F;&#xFF0C;&#x770B;&#x4E0D;&#x6765;&#x662F;&#x865A;&#x7EBF;
polyLine.getOutlinePaint().setStyle(Paint.Style.STROKE);
polyLine.getOutlinePaint().setPathEffect(new DashPathEffect(new float[]{15, 15}, 0));
</code></pre>
<h2 id="&#x7ED8;&#x5236;-polyline-&#x5927;&#x91CF;&#x70B9;-&#x5361;&#x987F;&#x95EE;&#x9898;"><a name="&#x7ED8;&#x5236;-polyline-&#x5927;&#x91CF;&#x70B9;-&#x5361;&#x987F;&#x95EE;&#x9898;" class="anchor-navigation-ex-anchor" href="#&#x7ED8;&#x5236;-polyline-&#x5927;&#x91CF;&#x70B9;-&#x5361;&#x987F;&#x95EE;&#x9898;"><i class="fa fa-link" aria-hidden="true"></i></a>3.9. &#x7ED8;&#x5236; Polyline (&#x5927;&#x91CF;&#x70B9;) &#x5361;&#x987F;&#x95EE;&#x9898;</h2>
<pre><code class="lang-text">&#x4F18;&#x5316;&#x65B9;&#x5411;
1&#x3001;&#x4F7F;&#x7528; xxx = new Polyline(map,true);
  &#x800C;&#x4E0D;&#x662F; xx = new Polyline(map);
2&#x3001;&#x4F7F;&#x7528;&#x62BD;&#x7A00;&#x7B97;&#x6CD5;&#x51CF;&#x5C11;&#x70B9;&#x7684;&#x4E2A;&#x6570;
</code></pre>
<h2 id="&#x6839;&#x636E;&#x5DF2;&#x77E5;&#x70B9;-&#x5E73;&#x79FB;&#x6307;&#x5B9A;&#x8DDD;&#x79BB;-&#x83B7;&#x53D6;&#x65B0;&#x7684;&#x70B9;-gps-&#x5750;&#x6807;"><a name="&#x6839;&#x636E;&#x5DF2;&#x77E5;&#x70B9;-&#x5E73;&#x79FB;&#x6307;&#x5B9A;&#x8DDD;&#x79BB;-&#x83B7;&#x53D6;&#x65B0;&#x7684;&#x70B9;-gps-&#x5750;&#x6807;" class="anchor-navigation-ex-anchor" href="#&#x6839;&#x636E;&#x5DF2;&#x77E5;&#x70B9;-&#x5E73;&#x79FB;&#x6307;&#x5B9A;&#x8DDD;&#x79BB;-&#x83B7;&#x53D6;&#x65B0;&#x7684;&#x70B9;-gps-&#x5750;&#x6807;"><i class="fa fa-link" aria-hidden="true"></i></a>3.10. &#x6839;&#x636E;&#x5DF2;&#x77E5;&#x70B9; &#x5E73;&#x79FB;&#x6307;&#x5B9A;&#x8DDD;&#x79BB; &#x83B7;&#x53D6;&#x65B0;&#x7684;&#x70B9; (gps &#x5750;&#x6807;)</h2>
<pre><code class="lang-text">GeoPoint geoPoint1 = DistanceTool.top(tepPoint_fz.getLongitude()  ,tepPoint_fz.getLatitude() ,distance) ;
public class DistanceTool {
    private static final double a = 6378245.0;

    private static double rad(double d) {
        return d * Math.PI / 180.0;
    }
    public static GeoPoint right(double lon, double lat, double dist) {
        double d = dist / a;
        double cs = Math.cos(rad(lat));
        double c = d / cs * 180.0 / Math.PI;
        return new GeoPoint(lat, lon + c);
    }
    public static GeoPoint top(double lon, double lat, double dist) {
        double d = dist / a;
        double c = d / Math.PI * 180.0;
        return new GeoPoint(lat+ c, lon  );
    }
}
</code></pre>
<h2 id="&#x975E;&#x6CD5;&#x7684;&#x7ECF;&#x7EAC;&#x5EA6;&#x5750;&#x6807;&#x5BFC;&#x81F4;app&#x5954;&#x6E83;"><a name="&#x975E;&#x6CD5;&#x7684;&#x7ECF;&#x7EAC;&#x5EA6;&#x5750;&#x6807;&#x5BFC;&#x81F4;app&#x5954;&#x6E83;" class="anchor-navigation-ex-anchor" href="#&#x975E;&#x6CD5;&#x7684;&#x7ECF;&#x7EAC;&#x5EA6;&#x5750;&#x6807;&#x5BFC;&#x81F4;app&#x5954;&#x6E83;"><i class="fa fa-link" aria-hidden="true"></i></a>3.11. &#x975E;&#x6CD5;&#x7684;&#x7ECF;&#x7EAC;&#x5EA6;&#x5750;&#x6807;&#x5BFC;&#x81F4;APP&#x5954;&#x6E83;</h2>
<pre><code class="lang-text">/**
 * &#x89E3;&#x51B3; &#x56E0;&#x4E3A;&#x4F20;&#x5165;&#x975E;&#x6CD5;&#x7684; &#x7ECF;&#x7EAC;&#x5EA6;&#x5750;&#x6807; &#x800C;&#x5BFC;&#x81F4;APP&#x5954;&#x6E83;
 * @author Aivin
 * created on 2021/11/5
GeoPoint geoPoint = new HXGeoPoint(200, 200);
GeoPoint geoPoint2 = new HXGeoPoint(geoPoint1) ; // GeoPoint

 */
public class HXGeoPoint  extends GeoPoint {
    public HXGeoPoint(double aLatitude, double aLongitude) {
        super(aLatitude, aLongitude);
        boolean isValid =OfflineMapTool.checkGeoPointIsValid(aLatitude , aLongitude) ;
        if(!isValid){
            setLatitude(0);
            setLongitude(0);
            WkLog.showErrorLog(&quot;&#x7ECF;&#x7EAC;&#x5EA6;&#x5F02;&#x5E38;,&#x6570;&#x636E;&#x8D85;&#x51FA;&#x8303;&#x56F4;&#xFF0C;&#x8BF7;&#x68C0;&#x67E5;&quot; );
        }
    }

    public HXGeoPoint(GeoPoint aGeopoint) {
        super(aGeopoint);
        boolean isValid =OfflineMapTool.checkGeoPointIsValid(aGeopoint) ;
        if(!isValid){
            setLatitude(0);
            setLongitude(0);
            setAltitude(aGeopoint.getAltitude());
            WkLog.showErrorLog(&quot;&#x7ECF;&#x7EAC;&#x5EA6;&#x5F02;&#x5E38;,&#x6570;&#x636E;&#x8D85;&#x51FA;&#x8303;&#x56F4;&#xFF0C;&#x8BF7;&#x68C0;&#x67E5;&quot; );
        }
    }
}

https://gitee.com/Aivin_CodeShare/android_tool_code/raw/master/OfflineMapTool.java
</code></pre>
<footer class="page-footer"><span class="copyright">( no Copyright&#xFF0C;enjoy youself ! ) all right reserved&#xFF0C;powered by Gitbook</span><span class="footer-modification">The file was updated at :
2022-04-04 10:49:02
</span></footer>
                                
                                </section>
                            
    </div>
    <div class="search-results">
        <div class="has-results">
            
            <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
            <ul class="search-results-list"></ul>
            
        </div>
        <div class="no-results">
            
            <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
            
        </div>
    </div>
</div>

                        </div>
                    </div>
                
            </div>

            
                
                <a href="相机模块.html" class="navigation navigation-prev " aria-label="Previous page: 相机模块">
                    <i class="fa fa-angle-left"></i>
                </a>
                
                
                <a href="Androidstudio插件开发.html" class="navigation navigation-next " aria-label="Next page: Androidstudio插件开发">
                    <i class="fa fa-angle-right"></i>
                </a>
                
            
        
    </div>

    <script>
        var gitbook = gitbook || [];
        gitbook.push(function() {
            gitbook.page.hasChanged({"page":{"title":"地图模块","level":"1.12.24","depth":2,"next":{"title":"Androidstudio插件开发","level":"1.12.25","depth":2,"path":"chinese/android基础/Androidstudio插件开发.md","ref":"chinese/android基础/Androidstudio插件开发.md","articles":[]},"previous":{"title":"相机模块","level":"1.12.23","depth":2,"path":"chinese/android基础/相机模块.md","ref":"chinese/android基础/相机模块.md","articles":[]},"dir":"ltr"},"config":{"plugins":["-search","search-plus","todo","anchor-navigation-ex","copy-code-button","fontsettings","tbfed-pagefooter","local-video","splitter","expandable-chapters","favicon","theme-comscore","local-video"],"styles":{"website":"styles/website.css"},"pluginsConfig":{"tbfed-pagefooter":{"copyright":"( no Copyright，enjoy youself ! )","modify_label":"The file was updated at :","modify_format":"YYYY-MM-DD HH:mm:ss"},"todo":{},"splitter":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"family":"sans","size":2,"theme":"white"},"highlight":{},"anchor-navigation-ex":{"associatedWithSummary":true,"float":{"floatIcon":"fa fa-navicon","level1Icon":"","level2Icon":"","level3Icon":"","showLevelIcon":false},"mode":"float","multipleH1":true,"pageTop":{"level1Icon":"","level2Icon":"","level3Icon":"","showLevelIcon":false},"printLog":false,"showGoTop":true,"showLevel":true},"favicon":{"shortcut":"assets/images/favicon.ico","bookmark":"assets/images/favicon.ico"},"theme-comscore":{},"local-video":{},"copy-code-button":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"expandable-chapters":{},"search-plus":{}},"theme":"default","author":"Aivin","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Aivin开发笔记","language":"zh-hans","gitbook":"*","description":"Aivin开发笔记"},"file":{"path":"chinese/android基础/地图模块.md","mtime":"2022-04-04T02:49:02.752Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2022-04-04T03:47:09.782Z"},"basePath":"../..","book":{"language":""}});
        });
    </script>
</div>

        
    <script src="../../gitbook/gitbook.js"></script>
    <script src="../../gitbook/theme.js"></script>
    
        
        <script src="../../gitbook/gitbook-plugin-search-plus/jquery.mark.min.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-search-plus/search.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-copy-code-button/toggle.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-local-video/video.min.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-splitter/splitter.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-expandable-chapters/expandable-chapters.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-theme-comscore/test.js"></script>
        
    

    </body>
</html>

